Использование нескольких областей действия с orWhere в Laravel 8: пример кода

В Laravel 8 вы можете использовать метод orWhereв сочетании с несколькими областями действия для построения сложных запросов. Метод orWhereпозволяет добавлять в запрос дополнительные условия «или».

Вот пример того, как вы можете использовать несколько областей действия с orWhereв Laravel 8:

  1. Определите свою модель и области действия:
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');
    }
}
  1. Используйте области действия в своем запросе:
use App\Models\YourModel;
$models = YourModel::scopeScope1()
    ->orWhere(function ($query) {
        $query->scopeScope2();
        $query->where('column3', '=', 'value3');
    })
    ->get();

В приведенном выше примере мы сначала применяем к запросу scope1. Затем, используя метод orWhere, мы добавляем дополнительное условие с помощью замыкания. Внутри замыкания мы применяем scope2и добавляем еще одно условие, используя where. При этом создается запрос, который будет извлекать записи, в которых соблюдены либо scope1, либо комбинированные условия scope2и дополнительное предложение where.