laravel集合的变化不起作用

时间:2015-09-08 11:21:06

标签: php laravel collections model eloquent

我有一个用户模型,它有一组帖子。 我希望用他们的帖子返回一组用户数据,除了每个用户的特殊帖子为json;为此,我使用此代码:

$users=User::with('posts')->get();
foreach($users as $user){
    $user->posts=$user->posts->except($except_id);
    // $user->posts=null;// ->>> also this code does not work
}
return $users;

但在输出用户中'帖子没有改变!!!

编辑:

$except_id = $user->golden_post_id;

2 个答案:

答案 0 :(得分:4)

我尝试了一些方法,最后我发现unset()可以解决问题。

此代码有效:

$users=User::with('posts')->get();
foreach($users as $user){
    $posts=$user->posts->except($except_id);
    unset($user->posts);
    $user->posts=$post;
}
return $users;

答案 1 :(得分:1)

您可能应该将此作为with调用中的查询约束,例如像这样:

$users = User::with(['posts' => function($query) use ($except_id) {
    $query->where('id', '!=', $except_id);
}])->get();

现在,除了ID为$except_id的帖子之外,您将收到所有用户的所有帖子,之后您无需经过这些帖子对其进行排序。