Как выбрать столбец RAW в Eloquent Model? - PullRequest
0 голосов
/ 06 февраля 2019

Я хотел бы добавить пользовательский столбец в моей модели Eloquent, например:

class Shape extends Eloquent
{
    public function getAreaAttribute()
    {
        return $this->width * $this->height;
    }
}

, который позволяет создать запрос, подобный следующему:

Shape::where('area', '>', 42)->get();

Что я мог сделатьэто:

Shape::select(['*', DB::RAW('width * height AS area')])->where('area', '>', 42)->get();

Но это не в моей модели.Можно ли получить что-то вроде:

class Shape extends Eloquent
{
    public function getAreaColumn()
    {
        return DB::RAW('width * height AS area')
    }
}

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Вы можете определить это в своей миграции:

$table->integer('area')->virtualAs('height * width');

, которая будет генерироваться при каждом чтении, или

$table->integer('area')->storedAs('height * width');

, если вы хотите сохранить столбец в базе данных, если вы нене хотите, чтобы поколение было всегда.

, а затем добавьте столбец area к вашей модели.Таким образом, вы можете использовать поле как в запросах, так и в моделях.

0 голосов
/ 06 февраля 2019

Надеюсь, этот код поможет вам

$result = DB::table('shape')
                 ->select(DB::raw('width * height AS area'))
                 ->where('area', '>', 42)
                 ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...