У меня есть следующая таблица на сервере postgresql с именем breadcrumbs
:
id SERIAL
path VARCHAR(300)
со следующими примерами данных:
id | path
--- | ---
1 | animes.like.hentai
2 | animes.dislike.hentai
3 | animes.like.shonen
4 | animes.like.action
И моделируетсяиспользуя следующую красноречивую модель:
<?php declare(strict_types=1);
namespace App\Model;
use Illuminate\Database\Eloquent\Model as BaseModel;
class Breadcrumbs extends BaseModel
{
protected $table = 'breadcrumbs';
//
}
И я хочу выполнить следующий выбор без использования sql:
select * from breadcrumbs where subpath(et_location_desc.path, 0, 1) != 'hentai'
До сих пор я пытался использовать следующий фрагмент кода:
Breadcrumbs::where("subpath(path, 0, 1)","hentai")->all();
Но я получаю следующую ошибку:
Illuminate/Database/QueryException with message 'SQLSTATE[42703]: Undefined column: 7 ERROR: column "subpath(path, 0, 1)" does not exist
LINE 1: select * from "breadcrumbs" where "subpath(path, 0, 1)"...
^ (SQL: select * from "breadcrumbs" where "subpath(path, 0, 1)" = hentai '
Это означает, что первый аргумент метода where()
заключен в кавычки, предполагая, что он является столбцом, а не функцией.
Итак, как я могу либо расширить построитель запросов модели, либо использовать приведенный выше код для правильного выбора?