在Laravel Eloquent中使用like语句返回“ id”

时间:2019-04-05 13:50:15

标签: laravel eloquent

我正试图通过Laravel Eloquent中的一条语句返回给定行的“ id”。我希望查询返回1或与该查询相关联的任何其他整数,但是它不起作用。相反,它返回的是“缩写”字段。

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

2 个答案:

答案 0 :(得分:1)

拔除会返回一个数组,因此您无法在该数组上调用first。试试这个:

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

请注意,first可能会返回null,因此在尝试获取id之前应先进行空检查。

或者如@DeesOomens建议将其包装为可选内容。

答案 1 :(得分:0)

您需要->get()查询的所有结果,然后->pluck()才能使用值:

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