В Laravel 8 вы можете использовать метод orWhere
в сочетании с несколькими областями действия для построения сложных запросов. Метод orWhere
позволяет добавлять в запрос дополнительные условия «или».
Вот пример того, как вы можете использовать несколько областей действия с orWhere
в Laravel 8:
- Определите свою модель и области действия:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class YourModel extends Model
{
public function scopeScope1($query)
{
return $query->where('column1', '=', 'value1');
}
public function scopeScope2($query)
{
return $query->where('column2', '=', 'value2');
}
}
- Используйте области действия в своем запросе:
use App\Models\YourModel;
$models = YourModel::scopeScope1()
->orWhere(function ($query) {
$query->scopeScope2();
$query->where('column3', '=', 'value3');
})
->get();
В приведенном выше примере мы сначала применяем к запросу scope1
. Затем, используя метод orWhere
, мы добавляем дополнительное условие с помощью замыкания. Внутри замыкания мы применяем scope2
и добавляем еще одно условие, используя where
. При этом создается запрос, который будет извлекать записи, в которых соблюдены либо scope1
, либо комбинированные условия scope2
и дополнительное предложение where
.