関連が見つからない場合、nullを空の配列に置き換えることはできますか?Laravel - 関係が見つからない場合、nullを空の配列に置き換えます。
など。顧客には連絡先と契約がありますが、契約の1つにウェブがありません。私はドキュメント(Constraining Eager Loads)で読んで
$customers = Customer::with('contacts', 'contracts.web')
->orderBy('company')->orderBy('prename')->get();
結果は以下の...
2 => array:21 [
"id" => 1
"contacts" => array:2 [
0 => array:12 [
"id" => 1
"customer_id" => 1
]
1 => array:12 [
"id" => 2
"customer_id" => 1
]
]
"contracts" => array:2 [
0 => array:9 [
"id" => 1
"customer_id" => 1
"web" => array:7 [
"id" => 1
"contract_id" => 1
]
]
1 => array:9 [
"id" => 2
"customer_id" => 1
"web" => null // should be replaced with []
]
]
]
ようになり、それは熱心な負荷を制約してクエリを操作するだけで可能です。それはあなたがそれが配列を返すので、私はこれをチェックし、この
を修正することができます最初の場所だから
UPDATE
契約クラス
class Contract extends Model
{
public function web()
{
return $this->hasOne(Web::class);
}
}
これはおそらくあなたを助けます:http://stackoverflow.com/a/40192093/1595977 – Edwin
@Edwinはあなたの助けに感謝しますが、あなたの投稿は熱心な読み込みの仕組みについてのみ説明しています。しかし、それは私の質問ではない...私の質問は、関係が見つからない場合は空の配列 –
'when'を使用してすべての' web => null'を 'web = > array() 'または結果を操作するだけです。 – Edwin