我有两个表事务和事务分配。一个事务可以有多个分配。
交易模型
Schema::create('transactions', function (Blueprint $table) {
$table->bigIncrements('id');
$table->timestamps();
$table->foreignId('contact_id')->constrained();
$table->decimal('amount',19,4)->nullable();
});
分配模型
Schema::create('transaction_allocations', function (Blueprint $table) {
$table->bigIncrements('id');
$table->timestamp('created_at');
$table->foreignId('transaction_id')->nullable()->constrained();
$table->foreignId('bill_id')->nullable()->references('id')->on('bills');
$table->decimal('amount',19,4)->nullable();
});
交易模型中的关系
public function allocations(){
return $this->hasMany(TransactionAllocation::class);
}
我需要查询交易金额大于该交易所有分配金额总和的所有交易。(基本上是查找具有未分配余额的交易)。
Transaction::where('contact_id',$id)->where('amount','>',sum of allocations)->get();
我如何实现它?
我能够创建一个访问器来执行此计算并找到未分配的金额。但似乎访问器不能在哪里使用。我不想加载所有交易然后过滤它,因为它会太多。
我想直接查询并获取过滤后的行。我该怎么做?