2017-03-28 1 views
1

나는이 다음 표 pharmacies,categories,medicines 내가 laravel웅변 laravel 여러 관계에서 데이터를 얻을

을 사용하고있는 관계는이

약국처럼 많은 약 한이고 약은 하나 개의 범주에 속하는

medicines 테이블은 다른 컬럼

01 pharmacy_idcategory_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

승인했습니다. –