我正在運行 Laravel 5.8 并整天用頭撞墻,以了解如何在 Laravel 中實作此 MySQL 查詢 -> 在我的 livewire 組件中渲染函式以列出所有可用的“ABK”,其中包括另一個表中的特定文本“部分”。
我有什么:
2張表,一張是ABK,另一張是PARTs<它們之間的關系是很多的,一個ABK可以有一個部分,一個部分可以有很多ABK。注意到模型中的關系,按預期作業。但是,如果我現在嘗試搜索兩個表(在我的 livewire 組件中進行排序和分頁),我需要在 Laravel 中使用以下查詢:
SELECT * FROM `abks` LEFT JOIN parts ON abks.part_id = parts.id WHERE parts.zeichnungsnummer LIKE 'F%'
如果我在 Tinker 中嘗試這個,我會得到結果:
$abks = ABK::where('id', 'like','%%')->with('part')->where('parts.zeichnungsnummer','like','F%')->get();
Illuminate/Database/QueryException with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'parts.zeichnungsnummer' in 'where clause' (SQL: select * from
abkswhereidlike %% andparts.zeichnungsnummerlike F%)',
我在這里做錯了什么?為什么 Eloquent 找不到這個專欄?
只是我想要實作的一個簡短示例,因為我的代碼在這里發布更復雜......我認為在一個小示例中發布它更容易理解。
進一步解釋為什么我需要這個:我有一個資料表,它輸出所有 ABK 并有 2 個搜索輸入,一個用于 ABKs 列,一個用于 PARTs 列 -> 用戶可以在其中搜索 ABKs 中的文本,另一個搜索輸入在零件表中。當用戶輸入時,它在 livewire 中以這種方式過濾......
感謝這里的所有人的精彩回答,并幫助我們學習和理解很多東西。
uj5u.com熱心網友回復:
您在雄辯的查詢中遺漏了 join 子句:
$abks = ABK::where('id', 'like',$abksId)
->join('parts','parts.id','=','abks.part_id')
->where('parts.zeichnungsnummer','like','F%')->get();
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/361739.html
標籤:拉拉维尔
上一篇:Livewire發射到和重定向
