Получить значения из отношения Laravel - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть запрос, в котором я получаю значения из 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,
]);

1 Ответ

3 голосов
/ 25 февраля 2020

Вы можете просто использовать with вот так:

Person::with(['register', 'relationship'])->find($id);
...