Возвратите "id", используя подобное утверждение в Laravel Eloquent - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь вернуть 'id' данной строки с помощью оператора Laravel Eloquent. Я хочу, чтобы запрос возвращал 1 или любое другое целое число, которое он находит связанным с этим запросом, но он не работает. Вместо этого он возвращает поле «аббревиатура».

public function getIdByAbbreviation($string)
{
    return $this->model->where('abbreviation', 'like', '%'.$string.'%')
        ->pluck('id')->first();
}

Ответы [ 2 ]

1 голос
/ 05 апреля 2019

Устройство возвращает массив, поэтому вы не можете вызвать first для массива. Попробуйте это:

return optional($this->model->where('abbreviation', 'like', "%$string%")->first())->id;

Точно так же, как вы знаете, first может вернуть null, поэтому вы должны проверить на ноль, прежде чем пытаться получить id.

Или, как @DeesOomens предложил обернуть в необязательный.

0 голосов
/ 05 апреля 2019

Вам необходимо ->get() все результаты запроса, прежде чем вы сможете ->pluck() значение:

public function getIdByAbbreviation($string)
{
    return $this->model->where('abbreviation', 'like', '%'.$string.'%')
        ->get()
        ->pluck('id')
        ->all();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...