我有三個表,File、FileFolder 和 Folder。這些表都有自己的 Laravel 模型,并有各自的名稱。
檔案
檔案夾
檔案夾
現在,我需要檢索folder 1
. 我們的專案中已經包含了一個 Eloquent 關系File model
,如下所示:
public function folderRelation()
{
return $this->belongsTo(FolderFileRelation::class, 'FileId', 'FileId');
}
查看官方
實際結果
my 上的 where 子句FileFolder relationship
沒有被使用,檔案表中的所有內容都是從資料庫中查詢出來的。
在 $files 中回傳
我是否正確實作了我的查詢,還是在這個用例中使用原始查詢更好?
可能的解決方案
原始查詢
使用原始查詢,它也可以完全按照我想要的方式作業。這種方法最大的缺點是無法根據需要使用集合。
查詢檔案夾,然后檢索檔案
我可以這樣查詢:
$files = FileFolder::where('FolderId', $folder)->get()->files();
但是,我的要求之一是僅查詢“影像”檔案,回圈遍歷所有檔案,并洗掉不是影像的鍵,這會創建一個不必要的額外回圈,這會在部署到生產環境時消耗服務器資源。
(旁注,抱歉將表格添加為影像。我使用 MD 編輯器制作它們,但似乎無法發布它們,因為 stackoverflow 錯誤地將它們識別為代碼,將它們視為行內代碼,如此處所述似乎沒有作業要么)
uj5u.com熱心網友回復:
有關 Laravel - Eloquent “Has”、“With”、“WhereHas”之間區別的更多詳細資訊,請參見此處With, WhereHas and Has
- 它們是什么意思?
正確的代碼如下
$files = File::with(['folderRelation'])->whereHas('folderRelation', function ($query) {
$query->where('FolderId', 0);
})->get();
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/515968.html
標籤:php拉拉维尔laravel-5雄辩laravel 模型