학교 프로젝트의 경우 Laravel 프레임 워크에서 웹 사이트를 만들고 있습니다. 컨트롤러의 다 대다 테이블의 데이터로 작업 할 수 없습니다.Laravel은 많은 관계에서 데이터를 얻습니다.
여기 내 모델입니다 :
class Item extends Eloquent {
public function Tags()
{
return $this->belongsToMany('Tag', 'items_has_tags', 'items_id', 'tags_id');
}
}
class Tag extends Eloquent {
public function LearningMaterials()
{
return $this->belongsToMany('LearningMaterial', 'learning_materials_has_tags', 'tags_id', 'learning_materials_id');
}
}
내 컨트롤러 내 항목에서 모든 태그를 반복 할 :
//get all items
$all = Item::where('public', '1')->get();
foreach($allLm as $item){
$tags = $item->Tags();
var_dump('will iterate');
foreach($tags as $t){
var_dump('will not iterate');
}
}
내 코드에 어떤 문제가 있습니까? 내 항목에서 태그를 처리하려면 어떻게해야합니까?
참고 : 검색 엔진을 만들고 있습니다. 사용자가 "mana"와 같은 입력 값을 삽입하면 태그 "management"가있는 모든 항목이 표시되어야합니다.
을 (그 배열에서 온)? – Pathros
@Pathros 그렇다면 관계가 필요합니까? 당신은 id를 가지고 있다면'Tag :: find ([1, 2, 3])'와 같은 질의 만 할 수 있습니다. – lukasgeiter
감사합니다. 그것은 여기서 [-] whereHas()와 그 다음에 -> whereIn()을 사용할 수 있다는 것을 알게 해주었습니다. [here] (https://stackoverflow.com/q/36593847/1883256). – Pathros