0

我有 3 张桌子:

邀请、巢穴和用户。

邀请具有nest_id。巢有 user_id

我想获取所有具有相同nest_id 的用户。我如何在 elequent 中做到这一点?

模型具有 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');
}
4

1 回答 1

1

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

$invites = Invite::with('user')->where('nest_id', '=', $nest_id);
foreach ($invites as $invite)
{
    $invite->user;
}
于 2013-04-18T20:08:51.317 回答