首页 > 解决方案 > Laravel 与查询生成器的关系得到错误

问题描述

我有 3 个与此表相关的表,我将调用此表

  1. 贝拉尼亚(父母)
  2. anak_belanja(儿童)
  3. 供应商(与父母有关系)

我可以从父母和孩子创建这种关系,但在表供应商上我得到一个错误。通常我使用“with”并且没有错误,但是现在我使用查询生成器并且遇到了问题

我的贝拉尼亚模型

public function supplier()
{
    return $this->belongsTo(\App\Models\Suplier::class ,'supplier_id');
}

我的 Anak_Belanja 模型

public function belanja()
{
    return $this->belongsTo(\App\Models\Belanja::class ,'belanja_id');
}

这是我的控制器

public function render()
{
    $user_id = Auth::user()->id;
    $sub = SubRincianUraianKegiatan::where('user_id', $user_id)
    ->where('id' , $this->newid)
    ->pluck('uraian', 'id'); 
    $sup = Supplier::all()->pluck('nama' ,'id');
   
    $data = DB::table('belanja AS t')
    ->select([
    't.id',
    't.uraian',
    't.tgl_belanja',
    't.supplier_id',
    DB::raw('coalesce(sum(p.harga * p.qty),0) AS total_order')
    ])
    ->leftjoin('suplier AS s','t.suplier_id','=','s.id') // on here i think this error
    ->leftjoin('anak_belanja AS p','p.belanja_id','=','t.id')    
    ->where('sub_id', $this->newid)
    ->where('uraian', 'like', '%'.$this->search.'%')
    ->groupBy('t.id')
    ->groupBy('t.uraian')
    ->groupBy('t.tgl_belanja')
    ->groupBy('t.suplier_id')
    ->paginate(10);

    return view('livewire.detail-belanja-lw',
    ['data' => $data ,
    'sup' => $sup,
    'sub' => $sub,
    ]);
}

在我的刀片中,我尝试添加这样的供应商

 {{$i->supplier->nama}}

但我得到一个错误

未定义的属性:stdClass::$supplier

有人可以解释我的错误吗?

标签: laraveleloquentquery-builder

解决方案


$data = DB::table('belanja AS t')
->select([
't.id',
't.uraian',
't.tgl_belanja',
't.suplier_id',
DB::raw('coalesce(sum(p.harga * p.qty),0) AS total_order'),
DB::raw('s.nama as nama')
])
->leftjoin('suplier AS s','t.suplier_id','=','s.id') // on here i think this error
->leftjoin('anak_belanja AS p','p.belanja_id','=','t.id')    
->where('sub_id', $this->newid)
->where('uraian', 'like', '%'.$this->search.'%')
->groupBy('t.id')
->groupBy('t.uraian')
->groupBy('t.tgl_belanja')
->groupBy('t.suplier_id')
->paginate(10);

尝试这个。


推荐阅读