Вызов функции-члена prepare () со значением null Laravel - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь добавить условие where с помощью функции, но при этом я получаю следующую ошибку:

Call to a member function prepare() on null in /vendor\/laravel\/framework\/src\/Illuminate\/Database\/Connection.php line 327
public function getAllTeams()
{
    $query = Team::where('tstatus', '!=', 'Deleted')
                ->where('tstatus', '!=', 'Ended');

    var_dump($query->getQuery()->connection->getPdo());
    $query->where(function($a){
            $a->where('tname', '=', "John's Team")
            ->orWhere('tname', '=', "Mark's Team");
    });
    var_dump($query->getQuery()->connection->getPdo());

    return $query->get();
}

Если я удаляю часть where tname, запрос выполняется отлично.

var_dumps выдает следующее

<code><small>Repositories/TeamRepository.php:31:</small><b>object</b(<i>Doctrine\DBAL\Driver\PDOConnection</i>)[<i>590</i>]
Репозитории / TeamRepository. php: 36: null

Я немного покопался в коде Laravel, и именно эта часть в следующем коде приводит к тому, что для переменной $ pdo устанавливается значение null

$this->model->newModelQuery()
/**
 * Add a basic where clause to the query.
 *
 * @param  \Closure|string|array  $column
 * @param  mixed   $operator
 * @param  mixed   $value
 * @param  string  $boolean
 * @return $this
 */
public function where($column, $operator = null, $value = null, $boolean = 'and')
{
    if ($column instanceof Closure) {
        $column($query = $this->model->newModelQuery());
        $this->query->addNestedWhereQuery($query->getQuery(), $boolean);
    } else {
        $this->query->where(...func_get_args());
    }

    return $this;
}

Я отредактировал Builder. php и заставил его работать со следующим кодом, но, очевидно, редактирование существующей библиотеки не является решением.

Почему переменная $ pdo имеет значение null, когда я использую Closure, но работает нормально, когда я не использую?

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