2017-03-28 68 views
1

我有以下表pharmacies,categories,medicines,我使用laravel得到laravel雄辯從多個關係數據

的關係都是這樣

藥房有許多藥物和藥屬於一個類別

medicines表具有pharmacy_idcategory_id和列+其它列

我想通過id顯示一家藥房,它應該返回藥房的一個對象類別,每個類別都有藥品對象。如果沒有任何類別的藥品,則不應退貨。

我認爲它的模型關係問題

任何想法可能是有用的

類型模型

class Category extends Model 
{ 
    protected $table = 'categories'; 

    public function pharmacies() 
    { 
     return $this->belongsToMany(Pharmacy::class, 'pharmacy_category', 'category_id', 'id'); 
    } 

    public function medicines() 
    { 
     return $this->hasMany(Medicine::class); 
    } 
} 

藥店模型

class Pharmacy extends Model 
{ 
    use SoftDeletes; 
    protected $table = 'pharmacies'; 

    protected $appends = ['favourite']; 

    public function categories() 
    { 
     return $this->belongsToMany(Category::class,'pharmacy_category','pharmacy_id','id'); 
    } 

    public function getFavouriteAttribute() 
    { 
     if (!Auth::check()) { 
      return 0; 
     } 
     return (FavouritePharmacy::where('user_id', Auth::user()->id)->where('pharmacy_id', $this->id)->count() == 1) ? 1 : 0; 
    } 
} 

的醫學模式

class Medicine extends Model 
{ 

    protected $appends = ['favourite']; 

    public function orders() 
    { 
     return $this->belongsToMany(Order::class); 
    } 

    public function getFavouriteAttribute() 
    { 
     if (!Auth::check()) { 
      return 0; 
     } 
     return (FavouriteMedicine::where('user_id', Auth::user()->id)->where('medicine_id', $this->id)->count() == 1) ? 1 : 0; 
    } 
} 
+0

您是否有密碼? – Laerte

+0

你的問題應該至少表現出最小的努力來接收答覆。在這種情況下,它不會。請向我們展示您嘗試實現此目的和任何相關錯誤。 – Ohgodwhy

+0

我更新了問題 –

回答

1

如果你想顯示藥店信息,類別,有藥品,這些關係我會做這樣的:在一個視圖

$pharmacy = Pharmacy::find($id); 

$categoriesWithMedicines = Category::whereHas('medicines', function($q) use($id) { 
     $q->where('pharmacy_id', $id); 
    }) 
    ->with(['medicines' => function($q) use($id) { 
     $q->where('pharmacy_id', $id); 
    }]) 
    ->get(); 

然後,你將有一個藥店對象和類別的一個列表屬於藥房的藥品:

@foreach ($categoriesWithMedicines as $category) 
    {{ $category->name }} 
    @foreach ($category->medicines as $medicine) 
     {{ $medicine->name }} 
    @endforeach 
@endforeach 
+1

謝謝,它的工作 –

+0

我確實批准了它 –