我有一個hasMany關系ModelA就是鏈接到ModelB. 在我的查詢中,我有一個where子句,用于查找ModelB關系中的特定資訊。
如果在ModelA和之間找到關系,一切都很好,ModelB但是如果和之間沒有關系ModelA,ModelB我會收到一個錯誤,即ModelB未找到特定列(來自)。
我已經嘗試了各種方法來檢查關系是否存在但沒有成功(包括:has(),relation()->exists())。
我可以在執行查詢后附加屬性并過濾掉結果,但是使用這種方法我的分頁號會變得混亂。
在運行查詢之前我可以做些什么來檢查關系是否存在?
uj5u.com熱心網友回復:
使用此方法檢查模型關系是否存在:
if (count($model->relation))
{
// exists
}
uj5u.com熱心網友回復:
嘗試這個;
$result = ModelA::whereIn('relation_id', ModelB::where('column', $data)->pluck('id')->toArray())->get();
uj5u.com熱心網友回復:
我需要使用的關系,而不是一個原因leftJoin是,我需要得到的所有結果中hasMany,作為特定行的一個陣列,而不是得到的第一個專案與關系leftJoin,并獲得來自不同的列數相同的行leftJoin。
但是,我已經嘗試了所有方法,但沒有任何效果,因此我又試了leftJoin一次并手動進行了更復雜的查詢,但最終得到了我需要的結果。
為了解決“獲得所有結果”leftJoin而不是一個(我只需要一列,ModelB但可能有多個關系),我\DB::raw("GROUP_CONCAT(ModelB.name SEPARATOR ', ') AS catName")在我中使用select(),然后groupBy->('ModelA.id')在獲得結果之前使用。這樣,所有關系結果都被分組到一個ModelB帶有', '分隔符的列中。
瘋狂問題的瘋狂解決方案,但它奏效了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/326510.html
