Laravel 拉雷维尔4:这种关系似乎不止一次起作用
我有一个与状态模型有一对多关系的用户模型。在我的代码中,第一次调用Laravel 拉雷维尔4:这种关系似乎不止一次起作用,laravel,relational-database,laravel-4,Laravel,Relational Database,Laravel 4,我有一个与状态模型有一对多关系的用户模型。在我的代码中,第一次调用User::find()->status一切都很好,但后来当我找到所有用户的朋友并查找他们的状态时,它会给我空数组,即使我知道状态在那里。一般来说,我对关系和拉威尔都是新手,所以我想我在看一些简单的东西。任何帮助和相关阅读(不是文档)将不胜感激! 问题代码是: $status = array(); $status[] = User::find(Auth::user()->id)->status; $f
User::find()->status代码>一切都很好,但后来当我找到所有用户的朋友并查找他们的状态时,它会给我空数组,即使我知道状态在那里。一般来说,我对关系和拉威尔都是新手,所以我想我在看一些简单的东西。任何帮助和相关阅读(不是文档)将不胜感激!
问题代码是:
$status = array();
$status[] = User::find(Auth::user()->id)->status;
$friends = User::find(Auth::user()->id)->friend;
$users = array();
foreach($friends as $f){
$users[] = User::find($f->friend_id)->friend;
}
foreach($users as $u){
$status[] = $u->status; // this line is the issue
}
$data['status'] = $status;
return View::make('index.index', $data);
编辑:
这些表格如下所示:
user friends status
////////////////// //////////////// ////////////////
// id // // id // // id //
// email // // user_id // // user_id //
// password // // friend_id // // status //
// first_name // // confirmed // // created_at //
// last_name // // created_at // // updated_at //
// created_at // // updated_at // ////////////////
// updated_at // ////////////////
//////////////////
您的关系可能设置不正确
您应该使用雄辩的方式来建模这些关系:
class User extends Eloquent
{
public function friends()
{
return $this->belongsToMany('User', 'users_friends', 'user_id', 'friend_id');
}
public function statuses()
{
return $this->hasMany('Status');
}
}
然后您可以使用如下代码:
$user = User::find(Auth::user()->id);
$friends = $user->friends;
$statuses = $user->statuses;
$friends_statuses = array();
foreach($friends as $friend)
{
$friends_statuses = array_merge($friends_statuses, $friend->statuses);
}
你确定你建立了正确的关系吗?或者如果用户有朋友?我认为这是正确的,但不太有效,我添加了表结构以确保我们在同一页上。另外,我的印象是belongtomany()只接受2个参数,我在哪里可以找到关于其他参数的文档?检查这里:在这个标题下:多对多。其中解释了如何覆盖相关键。