Почему переменная $ username показывает undefined, а затем не показывает ошибку в if ($ username = request ('creationBy')) {? - PullRequest
0 голосов
/ 01 ноября 2018

Я не понимаю код, который возвращает сообщения, созданные пользователем при обращении к конкретному URL. У меня два сомнения.

Во-первых, знаете ли вы, как переменная $username существует в "if($username = request('createdBy')){"? Прямо перед тем, как он показывает неопределенное.

Другое сомнение в том, знаете ли вы, как $posts = $posts-get();, если пользователь обращается к «http://proj.test/posts?createdBy=john”,, возвращает только сообщения, созданные пользователем (как и должно быть), а не все сообщения всех пользователей? Поскольку внутри 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 голосов
/ 01 ноября 2018

= является оператором присваивания. $username назначается, затем if проверяет, является ли значение $username достоверным.

Нет причин переназначать значение $ post в условном блоке. $ post является объектом построителя запросов, а $post->where() изменяет этот объект.

Я рекомендую вам прочитать операторы и объекты в руководстве по PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...