Модель отношений Laravel с оператором Where & orWhere - PullRequest
0 голосов
/ 03 июня 2018

В моем контроллере есть следующее:

            $documents = $equipment->attachments()
                ->where('attachmentCategory','=','Document')
                ->orWhere('attachmentCategory','=','Vehicle Title')
                ->get();

Но в то время как документы с attachmentCategory, равными Document, возвращают штраф, он продолжает вводить ВСЕ документы с Vehicle TitleattachmentCategory, даже если я попробую это утверждение только с использованием where и с Vehicle Title, он вернет только один документ (это правильно).

Это мои отношения, как определено в моей функции, и это имеетне подвела меня больше нигде, так что я знаю, что это в приведенном выше заявлении контроллера, я просто помещаю это здесь на всякий случай.

public function attachments()
{
    return $this->hasMany(EquipmentAttachment::class,'unitID','id');
}

Если бы вы могли исправить приведенное выше утверждение, это было бы здорово.Я хотел бы, чтобы он возвращал мне документы только в том случае, если у них есть вложениеКатегория Document ИЛИ Vehicle Title.

Ответы [ 2 ]

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

Я хотел бы, чтобы он возвращал мне документы, только если у них есть вложениеКатегория документа ИЛИ название транспортного средства.

Сверху я предполагаю, что вам необходимо применить фильтр к связанной коллекции, еслион соответствует заданным критериям и возвращает основной объект, например Запрос наличия отношения

$documents = $equipment->whereHas('attachments', function ($query) {
                            $query->whereIn('attachmentCategory', ['Document', 'Vehicle Title']);
                        })
                        ->get();
0 голосов
/ 03 июня 2018

Похоже, что это может быть ошибка Laravel.Я проверю это.

Это решение, хотя:

$documents = $equipment->attachments()
    ->where(function ($q) {
        $q
            ->where('attachmentCategory','=','Document')
            ->orWhere('attachmentCategory','=','Vehicle Title');
    })
    ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...