#laravel #laravel-4 #relationship #foreign-key-relationship
#laravel #laravel-4 #связь #foreign-key-relationship
Вопрос:
У меня есть отношение «Один ко многим» между исполнителем и альбомом, исполнитель может быть связан со многими альбомами, но альбом может быть связан только с одним исполнителем.
Моя модель художника:
<?php
class Artist extends Eloquent {
public function albums()
{
return $this->hasMany('Album');
}
}
Модель моего альбома:
<?php
class Album extends Eloquent {
public function artist()
{
return $this->belongsTo('Artist');
}
}
Я узнал, как получить все альбомы исполнителя, а также получить исполнителя альбома. Но я до сих пор не знаю, как выполнить этот запрос:
Получить все альбомы, исполнителем которых является «Linkin Park»
Что я сейчас делаю, так это:
$artist = Artist::where('name','=','Linkin Park')->first();
$albums = Album::where('artist_id','=',$artist->id)->get();
Я получаю то, что мне нужно, но мне было интересно, есть ли другой способ сделать это. Что-то вроде (я знаю, что это неправильно):
$albums = Album::where('artist','=','Linkin Park');
Ответ №1:
Неважно, я нашел способ сделать это, просмотрев примеры в официальной документации.
Запрос будет выглядеть следующим образом:
$albums = Album::whereHas('artist', function($q)
{
$q->where('name', '=', 'Linkin Park');
})->get();