猿问

laravel中如何获取另一个表中的数据where子句

我有 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))

有人可以帮忙吗?


#更新我在两张桌子上的模型


关于除霜型号


 public function induk_pencairan()

{

    return $this->belongsTo(\App\Models\IndukPencairan::class ,'induk_id');

    

}


子衿沉夜
浏览 175回答 2
2回答

慕姐8265434

你只需要加入他们......  $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'));

开心每一天1111

我用这个解决了 $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'));
随时随地看视频慕课网APP
我要回答