为什么$ username变量在if($ username = request('createdBy')){

时间:2018-11-01 15:23:09

标签: php laravel

我不了解在需要特定网址时返回由用户创建的帖子的代码。我有两个疑问。

首先,您是否知道变量$username在“ if($username = request('createdBy')){”中如何存在?就在它显示未定义之前。

另一个疑问是,如果用户访问“ http://proj.test/posts?createdBy=john”,$posts = $posts-get();会如何仅返回用户创建的帖子(应如此),而不返回所有帖子?用户?因为在if(username = request(createdBy))内$ posts变量没有被新值覆盖,所以$ posts值不应该显示所有用户的所有帖子?

public function index(Category $category) 
{
    if($category->exists){
        $posts = $category->posts()->latest();
    }else{
        $posts = Post::latest();
    }
    dd($username); // shows Undefined variable: username

    if($username = request('createdBy')){
        dd($username); // shows john if the url is "http://proj.test/posts?createdBy=john"
        $user = User::where('name', '=', $username)->first();
        $posts->where('user_id','=', $user->id);
    }
    $posts = $posts->get();
    return view('posts.index', compact(('posts')));
}

1 个答案:

答案 0 :(得分:1)

=是一个赋值运算符。分配了$username,然后if检查$username的值是否正确。

没有理由在条件块中重新分配$ post的值。 $ post是一个查询生成器对象,而$post->where()正在对该对象进行突变。

我建议您阅读PHP手册中的operatorsobjects