Получение данных из двух отдельных моделей в Laravel - PullRequest
0 голосов
/ 01 ноября 2018

Я хотел получить данные, связанные с идентификатором, и я использовал метод find($id), чтобы получить эти данные, теперь я хочу получить данные из двух таблиц, которые имеют отношение один ко многим.

Как я могу получить данные, связанные с одним и тем же идентификатором, из двух таблиц?

Я пытаюсь так, но это не сработало:

public function show($id)
{

    $post=Clients::find($id);

    return view('pet.shw',['post'=>$post,'pets'=>$post->pets]);
}

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Сначала необходимо определить отношения между вашей Client моделью и Pet моделью

Итак, в App\Client вы бы имели следующие отношения:

public function pets()
{
    return $this->hasMany(Pet::class); 
}

и App\Pet, вы бы имели следующие отношения:

public function client()
{
    return $this->belongsTo(Client::class)
}

После этого вы сможете сделать это в вашем контроллере:

public function show($id)
{
    $post = Client::with('pets')->find($id);

    return view('pet.shw')
        ->withPost($post);
}

и получает доступ к вашим отношениям в виде pet.shw:

foreach($post->pets as $pet) {} 

Для получения дополнительной информации прочитайте о Красноречивые отношения

0 голосов
/ 01 ноября 2018

Почему вы не используете with() У меня есть простое решение, но, возможно, не лучшее решение: Post::with('pets')->where('id',$id)->first();

Возможно, приведенный ниже код работает, чтобы я его не тестировал:

Post::with('pets')->find($id);

Конечно, у вас должен быть comments метод в вашем Post Объекте:

 public function pets(){

   return $this->hasMany(Pet::class);
}

надеюсь, помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...