Laravel 如何从两列具有相同值的表中获取记录?

Laravel 如何从两列具有相同值的表中获取记录?,laravel,eloquent,Laravel,Eloquent,我有一个名为agent\u payment with schema的表 Schema::create('agent_payment', function (Blueprint $table) { $table->increments('id'); $table->integer('agent_id'); $table->integer('created_by'); $table->integer('rid')

我有一个名为agent\u payment with schema的表

Schema::create('agent_payment', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('agent_id');
        $table->integer('created_by');
        $table->integer('rid')->nullable()->comment('Only For Admin Reservation');
        $table->string('date');
        $table->string('paid_amount');
        $table->string('paid_by')->nullable();
        $table->string('received_by')->nullable();
        $table->enum('type',['cash','cheque']);
        $table->string('bank_name')->nullable();
        $table->string('cheque_num')->nullable();
        $table->string('deposited_to')->nullable();
        $table->string('account_num')->nullable();
        $table->string('slip')->nullable();
        $table->integer('verified')->default(0)->comment('Verified 1 Unverified 0');
        $table->integer('status_change')->default(0);
        $table->string('reject_message')->nullable();
        $table->timestamps();
    });
我有这个表格代理付款的模型

现在,我尝试在两列中获取具有相同值的记录

只是我需要有记录的

状态更改=0且已验证=0

状态更改=1且已验证=1

很容易获得上述任何一项,如:

$payments = AgentPayment::where('status_change',1)->where('verified',1)->get();

但是如何获得这两个答案。

我认为这样的答案应该是:

$payments = AgentPayment::where(['status_change', 1],['verified', 1])->orWhere(['verified',0], ['status_change', 0])->get();

如果您试图实现几个分组where,那么可以使用如下闭包:

AgentPayment::where(function($query) {
    return $query->where('status_change', 1)->where('verified', 1);
})->orWhere(function($query) {
    return $query->where('status_change', 0)->where('verified', 0);
})->get();
这将产生如下查询:

select * from agent_payment where (status_change = 1 AND verified = 1) OR (status_change = 0 AND verified = 0)

没问题,很高兴有帮助。