我的控制器中有以下内容:
$documents = $equipment->attachments()
->where('attachmentCategory','=','Document')
->orWhere('attachmentCategory','=','Vehicle Title')
->get();
但是当attachmentCategory
等于Document
的文档返回正常时,它会继续使用Vehicle Title
attachmentCategory引入所有文档,即使我只是尝试使用此语句在哪里和它Vehicle Title
它只会返回一个文件(这是正确的)。
这是我在我的函数中定义的关系,这在其他任何地方都没有让我失望,所以我知道它在上面的控制器语句中,我只是把它放在这里以防万一。
public function attachments()
{
return $this->hasMany(EquipmentAttachment::class,'unitID','id');
}
如果你能纠正上面的陈述,那就太好了。我希望只有在他们有Document
或Vehicle Title
的附件类别的情况下才能将文件归还给我。
答案 0 :(得分:1)
这似乎可能是一个Laravel错误。我会测试一下。
这是解决方案:
$documents = $equipment->attachments()
->where(function ($q) {
$q
->where('attachmentCategory','=','Document')
->orWhere('attachmentCategory','=','Vehicle Title');
})
->get();
答案 1 :(得分:1)
我希望只有文件或车辆标题的附件类别才能将文件归还给我。
从上面我假设您需要对相关集合应用过滤器,如果它与给定条件匹配,则返回主对象,如Querying Relationship Existence
$documents = $equipment->whereHas('attachments', function ($query) {
$query->whereIn('attachmentCategory', ['Document', 'Vehicle Title']);
})
->get();