Проверьте отношение laravel и распечатайте результаты - PullRequest
0 голосов
/ 07 июня 2018

У меня есть отношение, в foreach я проверяю, существует ли это отношение, затем печатаю результат, но если еще, то печатаю результаты без отношения.

@foreach($attr as $at)
@if($at->related)
    <option value="{{ $at->related->id }}">
            @if($at->value)
                {{ $at->related->value }}
            @else
                {{ $at->related->extra['first_name'] ? 'First Name and Lastname: ' . $at->related->extra['first_name'] : '' }} {{ $at->related->extra['last_name'] }} |
                {{ $at->related->extra['email'] ? 'Email: ' . $at->related->extra['email'] : '' }} |
                {{ $at->related->extra['telephone'] ? 'Tel: ' . $at->related->extra['telephone'] : '' }}
            @endif
    </option>
@else
    <option value="{{ $at->id }}">
        @if($at->value)
            {{ $at->value }}
        @else
            {{ $at->extra['first_name'] ? 'First Name and Lastname: ' . $at->extra['first_name'] : '' }} {{ $at->extra['last_name'] }} |
            {{ $at->extra['email'] ? 'Email: ' . $at->extra['email'] : '' }} |
            {{ $at->extra['telephone'] ? 'Tel: ' . $at->extra['telephone'] : '' }}
        @endif
    </option>
@endif @endforeach

Я получаю все результаты и с отношением и без отношения.Как я могу это исправить?Условие не работает.

В $attr У меня есть массив с моделями Атрибут:

$attrs = Attribute::with('related')->get()->groupBy('attr_id');

Ответы [ 3 ]

0 голосов
/ 07 июня 2018

Когда вы делаете groupBy('attr_id') Laravel Collection создает коллекцию коллекции на основе идентификатора.

Правильная реализация - это вложенный цикл foreach для итерации по коллекциям.

Коллекция:

$attrCollection = Attribute::with('related')->get()->groupBy('attr_id');

Файл блейда:

@foreach($attrCollection as $attr)
    @foreach($attr as $at)
        @if(! is_null($at->related) )
            <option value="{{ $at->related->id }}">
                @if($at->value)
                    {{ $at->related->value }}
                @else
                    {{ $at->related->extra['first_name'] ? 'First Name and Lastname: ' . $at->related->extra['first_name'] : '' }} {{ $at->related->extra['last_name'] }} |
                    {{ $at->related->extra['email'] ? 'Email: ' . $at->related->extra['email'] : '' }} |
                    {{ $at->related->extra['telephone'] ? 'Tel: ' . $at->related->extra['telephone'] : '' }}
                @endif
            </option>
        @else
            <option value="{{ $at->id }}">
                @if($at->value)
                    {{ $at->value }}
                @else
                    {{ $at->extra['first_name'] ? 'First Name and Lastname: ' . $at->extra['first_name'] : '' }} {{ $at->extra['last_name'] }} |
                    {{ $at->extra['email'] ? 'Email: ' . $at->extra['email'] : '' }} |
                    {{ $at->extra['telephone'] ? 'Tel: ' . $at->extra['telephone'] : '' }}
                @endif
            </option>
        @endif
    @endforeach
@endforeach
0 голосов
/ 07 июня 2018

Заменить

@if($at->related)

на

@if(!$at->related->isEmpty())
0 голосов
/ 07 июня 2018

Попробуйте, изменив условие с

@if($at->related)

на

@if(!empty($at->related))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...