私はLaravel 5.4を使用して、人が作成した、または管理しているタスクを返します。Eloquent複数のリレーションをマージする方法は?
コードは以下の通りである:
public function tasks()
{
$creator = $this->morphMany('App\Task', 'created_by');
$manager = $this->morphMany('App\Task', 'managed_by');
}
この関数は、型Illuminate\Database\Eloquent\Relations\Relation
のオブジェクトを返すことが期待されます。
私は、これら2つの試みを試みたが、それらのどれもが必要な型を返しません:クエリビルダを使用して
// using merge:
$task1 = collect([$creator]);
$task2 = collect([$manager]);
return $task1->merge($task2); // it returns an empty collection.
第二の試み:
return Task::
where([
['created_by_type', '=', 'App\Person'],
['created_by_id', '=', $this->id]
])
->orwhere([
['managed_by_type', '=', 'App\Person'],
['managed_by_id', '=', $this->id]
])->get();
// returns the correct data but not as an object of Illuminate\Database\Eloquent\Relations\Relation
が、それはこれらの2つの関係をマージして戻すことができるの結果はIlluminate\Database\Eloquent\Relations\Relation
タイプですか?
タイプリレーションが返される必要がある理由は何ですか? –
あまりにも多くの理由があります。 – Warrio