在Laravel 3l中,我想从has_many关系中使用Eloquent获得结果

时间:2013-04-18 17:49:01

标签: laravel laravel-3

我有3张桌子:

邀请,巢和用户。

邀请有nest_id。 巢有user_id

我想让所有拥有相同nest_id的用户。我该如何做到这一点?

模型具有has_many关系


我试图在控制器中执行此操作:

$users = User::with('invite')->where('invites.nest_id', '=', $id)->get();

我收到此错误:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'invites.nest_id' in 'where clause'

SQL: SELECT * FROM `users` WHERE `invites`.`nest_id` = ?

Bindings: array (
  0 => '2',
)

据说我没有nest_id列,但是我知道。


class User extends Eloquent
{

public static $table = 'users';
public static $accessible = array('username', 'email', 'picture', 'password');

public function nest()
{
    return $this->has_many('Nest');
}

    public function invite()
{
     return $this->has_many('Invite');
}

class Nest extends Eloquent
{

public static $table = 'nests';

public function user()
{
    return $this->belongs_to('User');
}

public function idea()
{
    return $this->has_many('Idea');
}

public function invite()
{
    return $this->has_many_and_belongs_to('Invite');
}

1 个答案:

答案 0 :(得分:1)

Laravel关系不使用连接,因此无法访问关系中的其他表。对于涉及“很多”的关系,这通常会更有效。这确实意味着您必须向后思考这样的事情 - 您需要具有给定Nest的Invites的用户。

$invites = Invite::with('user')->where('nest_id', '=', $nest_id);
foreach ($invites as $invite)
{
    $invite->user;
}