我有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');
}
答案 0 :(得分:1)
Laravel关系不使用连接,因此无法访问关系中的其他表。对于涉及“很多”的关系,这通常会更有效。这确实意味着您必须向后思考这样的事情 - 您需要具有给定Nest的Invites的用户。
$invites = Invite::with('user')->where('nest_id', '=', $nest_id);
foreach ($invites as $invite)
{
$invite->user;
}