당신이 조리법은 과거의 어떤에서 하루에 속하는 것이다 레시피 테이블 등의 평일 저장하는 경우 시간을 - 당신은이처럼 Week
모델의 관계와 방법을 만들 수 있습니다
을
public function recipes()
{
return $this->hasMany('Recipe');
}
public function recipesForDay($day)
{
return $this->recipes()->where('day',$d);
}
... 다음은, 그러나, 당신의 Recipe
표는 어떤 관계 정보를 저장하지 않는 경우 (Week::find(1)->recipesForDay('monday')->first();
를 호출하여 매일 액세스 즉, 더 week_id
및 day
없다 열이 recipes
인 경우 중간 recipe_week
피벗 테이블이 필요합니다. 피벗 테이블과 같아야합니다
recipe_week
------------------------------------
recipe_id (integer/unsigned)
week_id (integer/unsigned)
day (integer, enum, or string)
당신의 Week
모델에서 (Week.php) :
public function recipes()
{
return $this->belongsToMany('Recipe')->withPivot('day');
}
public function recipesByDay()
{
return $this->recipes->keyBy('pivot.day');
}
public function recipeForDay($day)
{
return $this->recipes()->where('day', $day)->first();
}
선택적으로, 당신의 Recipe
모델 (Recipe.php) :
public function weeks()
{
return $this->belongsToMany('Week')->withPivot('day');
}
이 설정을 사용하면 attach
을 사용하여 조리법과 주간을 구분하여 추가 속성으로 날짜를 지정합니다. 예를 들어, 주 # 1 월요일 조리법으로 조리법 # 9를 지정합니다 : 당신의 recipes
표는 그대로 유지하면서, 관계를 만들어
Week::find(1)->recipes()->attach(9, array('day' => 'monday'));
을 .... 그들을 루프없이
$recipe = Week::find(1)->recipeforDay('wednesday');
가 특정 주에 대한 모든 조리법을 얻으려면, 그들의 하루에 액세스 :
그런 다음, 특정 일에 대한 조리법을 얻기 위해, 당신은 조회 할 수 있습니다
$recipes = Week::find(1)->recipesByDay();
var_dump($recipes['monday']->name);
var_dump($recipes['monday']->ingredients);
// etc...
쿼리를 실행하는 것처럼 "-> 월요일"을 사용 하시겠습니까? 잘. Scope (http://laravel.com/docs/4.2/eloquent#query-scopes)를 사용할 수 있다고 생각합니다. 다른 문제들에 관해서는 ... 지금 당장은 도움이 안됩니다. – klauskpm
글쎄요, 스코프는 좋은 지적이지만, 제가 정확히 찾고있는 것은 아닙니다. "-> 월간"은 내가 조리법에 접근 할 필요가있는 방식의 예입니다. 그러나 실제 문제를 명확히하는 것이 더 좋습니다. : 나는 일주일 조리법을 열심히 읽는 등 조리법 전체를로드합니다. 나는 또한 7 번을 질의하지 않고 하루를 기준으로 각각을 검색하는 논리적 인 방법을 처분하고자한다. – lucabartoli
조리법을 평일과 어떻게 일치 시킬지에 대해서는 아무 것도 말하지 않습니다. 관련 레시피 컬렉션에서 주어진 레서피를 가져올 몇 가지 방법이 아니라 여기에 필요한 범위가 아닙니다. 이는 전적으로 사용자에게 달려 있습니다. –