Laravel 如何从两列具有相同值的表中获取记录?
我有一个名为agent\u payment with schema的表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')
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)
没问题,很高兴有帮助。