我有2个具有关联的表。我想添加where子句,但此where子句在另一个表中。我的桌子是这样的:
pencairan
+----+------------+------------+------------+
| id | induk_id | qty | harga
+----+------------+------------+------------+
| 1 | 1 | 10 | 1000
+----+------------+------------+------------+
| 2 | 1 | 20 | 3000
+----+------------+------------+------------+
| 3 | 3 | 10 | 1500
+----+------------+------------+------------+
induk_pencairan
+----+------------+------------+------------+
| id | rek_id | name | address
+----+------------+------------+------------+
| 1 | 1 | somedata| somedata
+----+------------+------------+------------+
| 2 | 1 | somedata| somedata
+----+------------+------------+------------+
| 3 | 3 | somedata| somedata
+----+------------+------------+------------+
| 4 | 3 | somedata| somedata
+----+------------+------------+------------+
所以我想这样做:
$pencairan = IndukPencairan::with('turunan_belanja')->findOrFail($id);
if (!$pencairan)
abort(404);
$id = $pencairan->id;
$rek = $pencairan->rek_id;
$digunakan = Pencairan::with('induk_pencairan')
->where('induk_pencairan.rek_id' ,$rek)
->whereNotIn('induk_id ', [$id])->sum(DB::raw('harga*qty'));
但是我得到了错误
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'induk_pencairan.rek_id' in 'where clause'
(SQL: select sum(harga*qty) as aggregate from `pencairan` where `induk_pencairan`.`rek_id` = 2 and `induk_id` not in (2))
有人可以帮忙吗?
#在2个表上更新我的模型
在Pencairan型号上
public function induk_pencairan()
{
return $this->belongsTo(\App\Models\IndukPencairan::class ,'induk_id');
}
答案 0 :(得分:0)
您只需要join他们...
$digunakan = Pencairan::with('induk_pencairan')->join('pencairan','pencairan.induk_id','=','induk_pencairan.id')
->where('induk_pencairan.rek_id' ,$rek)
->whereNotIn('induk_id ', [$id])->sum(DB::raw('harga*qty'));
或者您可以使用whereHas
$digunakan = Pencairan::with('induk_pencairan')->whereHas('induk_pencairan',function ($query)use($rek)
{
$query->where('induk_pencairan.rek_id' ,$rek);
})
->whereNotIn('induk_id ', [$id])->sum(DB::raw('harga*qty'));
答案 1 :(得分:0)
我解决了
$digunakan = Pencairan::with('induk_pencairan')
->whereHas('induk_pencairan', function($query) use ($rek) {
$query->where('rek_id', $rek);
})->whereNotIn('induk_id', [$id])->sum(DB::raw('harga*qty'));