无法创建Laravel查询

时间:2014-12-15 09:31:57

标签: sql forms select laravel eloquent

我试图在Laravel 4中创建一个表单选择框。

共有3种模式:用户,乐队和专辑。

我建立了雄辩的关系,工作如下:

  • 用户有多个乐队
  • 乐队有很多用户
  • A Band hasMany Album
  • 专辑属于乐队

如何创建数组$ albums:

$userid = Auth::user()->id;
$albums = Album::where(the band the album belongs to has a user with id = $userid);

我似乎无法解决这个问题。

我是否应该在相册和用户之间创建多对多关系,这样我就可以构建一个更简单的查询,例如$ albums = $ user-> albums;

我不希望创建另一个多对多关系,因为这是一个全新的数据库管理层,可能会让事情变得混乱。

感谢您的协助! 〜罗斯

2 个答案:

答案 0 :(得分:1)

试试这个:

$user = Auth::user();
$albums = new \Illuminate\Database\Eloquent\Collection;
foreach($user->bands as $band){
    $albums = $albums->merge($band->albums);
}

答案 1 :(得分:0)

lukasgeiter几乎有正确的答案,唯一的问题是有多个乐队它抛出一个错误。我通过在foreach循环中合并$ band->相册来修复它,然后在循环完成时创建列表数组。

$albumcheck = new \Illuminate\Database\Eloquent\Collection;
  foreach($user->bands as $band){
    $albumcheck = $albumcheck->merge($band->albums);
  }
$albums = $albumcheck->lists('title', 'id');