我正在使用 Laravel 5.7 版本。我想對 where 子句使用多個預加載。我簡化了 laravel。$query = Employee::with(['User','Company','Client'])
->select(*)->whereRaw("(User.id <> 0 and Company.name LIKE %A%) OR Client.id <> 0)")我正在使用預加載來避免 JOIN 語句。但問題是錯誤消息說 User.id is unknown column in where 子句。我相信另外兩個也是未知的專欄。任何想法,將不勝感激。
1 回答

qq_花開花謝_0
TA貢獻1835條經驗 獲得超7個贊
它看起來有點丑陋,但你可以使用閉包:
$query = Employee::with('User', function ($inner) {
$inner->where('id', '!=', 0);
})->with(['Company', 'Client'])
->where(function (Builder $sub) use($companyName) {
$sub->where('Company.name', 'like', $companyName)
->orWhere('Client.id', '!=', 0);
})->get();
這將檢索:
employees where (user.id != 0 AND (company.name LIKE :companyName OR client.id != 0))
為了修改這些約束的順序,您需要根據您的要求移動閉包和約束,但據我所知,應該這樣做。
- 1 回答
- 0 關注
- 152 瀏覽
添加回答
舉報
0/150
提交
取消