#laravel
Вопрос:
Можно ли указать предложение where для модели, которое будет выполняться при каждом выборе?
Пример:
У меня есть запрос $var = TestModal::where('date', '2021-06-08')->get();
, и я хочу TestModal
, чтобы он выполнялся ->where('type', 'r')
для каждого запроса, чтобы мне не приходилось писать его несколько раз
Комментарии:
1. это то, что область запроса предназначена для be:laravel.com/docs/8.x/eloquent#writing-global-scopes
Ответ №1:
Вы можете использовать Анонимную глобальную область для определения запроса для каждого запроса, выполняемого в модели
<?php
namespace AppModels;
use IlluminateDatabaseEloquentBuilder;
use IlluminateDatabaseEloquentModel;
class TestModal extends Model
{
/**
* The "booted" method of the model.
*
* @return void
*/
protected static function booted()
{
static::addGlobalScope('type', function (Builder $builder) {
$builder->where('type', 'r');
});
}
}
Ответ №2:
да, вы можете использовать несколько таких мест, как это
var = TestModal->where(['date' => '2021-06-08', 'type' => '' ])->get();
or
var = TestModal->where('date' , '2021-06-08' )->where('type' , '')->get();
or can your addGlobalScope
protected static function booted()
{
static::addGlobalScope('table_name', function (Builder $builder) {
$builder->where('type', ');
});
}