У меня есть запрос, в котором я получаю значения из 3 таблиц, для первых 2 я использую leftJoin, и это нормально, но для третьего я пытаюсь получить массив объектов, и я не уверен, как. В таблице отношений a есть несколько строк для каждого идентификатора из таблицы People. Тип HasMany.
$q = Person::leftJoin('registers', 'people.register_id', '=', 'registers.id')
->leftJoin('relationships', 'people.id', '=', 'relationships.person_id') //if I comment this it works for first 2 tables
->find($id);
return response()->json($q);
Персона
public function relationship()
{
return $this->hasMany(Relationship::class);
}
public function register()
{
return $this->belongsTo(Register::class);
}
Отношения
public function person()
{
return $this->belongsTo(Person::class, 'person_id');
}
Регистрация
public function people(){
return $this->hasOne(Person::class);
}
ОБНОВЛЕНИЕ -> это работает, но уродливо, я думаю, что это должно быть лучше в Laravel
$q = Person::leftJoin('registers', 'people.register_id', '=', 'registers.id')
->find($id);
$q2 = Person::find($id)->relationship;
return response()->json([
'values' => $q,
'relationship' => $q2,
]);