Bu tarz sorguları Model'ler ilede oluşturabilirsiniz. Aşağıda örnek bir kullanım.
Karar::join("kurum", "karar.kurum_id", "=", "kurum.id")
->join("karar_sonuc_tip", "karar.karar_sonuc_tip_id", "=", "karar_sonuc_tip.id")
->join("kurum_tip", "kurum.kurum_tip_id", "=", "kurum_tip.id")
->orderBy('created_at', 'desc')
->paginate(15, array("karar.*", "kurum.tanim as kurum_tanim", "kurum_tip.tanim as kurum_tip", "karar_sonuc_tip.tanim as karar_sonuc"))
Ama yukarıdaki kullanım laravel açısından olaya bakarsanız pek de istenilen bir sorgu değildir. Sizin örneğiniz için stok, kategori ve uretici tablolarının her birine bir model oluşturmakla işe başlamalısınız. join işlemini yaptığınız tabloları modeller içerisinde One To One(hasOne), One To Many(hasMany), Many To Many(belongsToMany) gibi durumlardan hangisi uygunsa onunla belirtmelisiniz. Benim örneğim için örnek bir kullanım aşağıdadır. Aşağıdaki şekilde oluşturduktan sonra Stok::with(ilgili tablolar) şeklinde kullanarak sonrasında where condition vb. eklemeleri yaparak kullanabilirsiniz.
class KararSonucTip extends Eloquent
{
protected $table = 'karar_sonuc_tip';
public function karar()
{
return $this->belongsToMany('Karar', "id", "kurum_id");
}
}
class KurumTip extends Eloquent
{
protected $table = 'kurum_tip';
public function kurum()
{
return $this->belongsToMany('Kurum', "id", "kurum_tip_id");
//belongsToMany("tablo adı", "local_id", "ait_oldugu_tablodaki_id")
}
}
class Karar extends Eloquent
{
protected $table = 'karar';
public function kurum()
{
return $this->hasOne('Kurum', "id", "kurum_id")->with("kurum_tip");
}
public function karar_sonuc_tip()
{
return $this->hasOne('KararSonucTip', "id", "karar_sonuc_tip_id");
}
}
Umarım faydalı olur. İyi çalışmalar.