Таблица отношения 3 (laravel 5.7)

У меня есть 3 таблицы, подобные этому изображению. Я хочу получить питомца с указанием расы и получить владельца этого питомца. Как получить все три рекорда от домашних животных.

enter image description here

Я попробовал

Pets :: find ($ id) -> races () -> with (users) -> get ();

public function users()
{
    return $this->hasMany('App\User', 'id');
}

public function races()
{
    return $this->hasMany('App\Races', 'id', 'id');
}

Спасибо за помощь

0
0
583
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

если у вас есть модель домашних животных, вы должны добавить принадлежность пользователю, а также принадлежность к pets_reces в ней

и попробуйте Pets::find($id)->races; или Pets::find($id)->users;

Другой способ - получить идентификатор пользователя или идентификатор расы, а затем получить из него всех питомцев без создания модели для домашних животных, чтобы вы могли добавить принадлежность ко многим пользователям и расам.

задайте вопрос решенным и установите ответ как лучший или оцените - оцените его @Unmecparla

Taif Raoof 14.09.2018 20:15
Ответ принят как подходящий

Обычно, когда у вас есть [что-то] _id, он указывает строку принадлежит на другую строку.

Измените отношения в вашей модели Pets, чтобы они были:

public function user()
{
    return $this->belongsTo('App\User');
}

public function race()
{
    return $this->belongsTo('App\Races');
}

Затем, чтобы получить user и race, вы можете:

Pets::with('user', 'race')->find($id);

или, поскольку здесь загружается только один Pet, вы можете просто сделать:

$pet = Pets::find($id);

и у вас в любом случае будет доступ к $pet->user и $pet->race.

Другие вопросы по теме