Eloquent를 사용하여 관계를 설정하고 올바르게 쿼리하는 데 문제가 있습니다. 제품이 있고 각 제품은 사용자의 지역에 따라 여러 개의 이름/설명/가격을 가질 수 있습니다. 이제 내 문제는이 관계를 사용하여 이러한 제품에 관련된 데이터를 업데이트하려고 할 때 제품 정보 (주식, ID, 제조일 등) 또는 언어 정보 만 가져올 수 있지만 동시에 둘 다 가져올 수 없다는 것입니다. 저는 영원히, 묵시적인 문서를 살펴 보았습니다. 그러나 그 예들은 매우 광범위하지 않습니다. 여기 내 모델은 다음과 같습니다 나는 거의 L4에 설명 된 모든 맛을 시도Eloquent에서 일대 다 관계가있는 다국어 사이트
class Product extends Eloquent {
protected $fillable = array('category_id', 'availability', 'image', 'year', 'stock');
public static $rules = array(
'category_id'=>'required|integer',
'title'=>'required|min:2',
'description'=>'required|min:20',
'price'=>'required|numeric',
'year'=>'required|integer',
'availability'=>'integer',
'image'=>'required|image|mimes:jpeg,jpg,bmp,png,gif'
);
public function category() {
return $this->belongsTo('Category');
}
public function productlanguage(){
return $this->hasMany('ProductLanguage');
}
}
: 제품 정보
class ProductLanguage extends BaseModel {
protected $table = 'products_lang';
protected $fillable = array('title','description','price','language');
public function product(){
return $this->belongsTo('Product');
}
}
모델 : 테이블에 대한
모델이 언어 특정 정보를 보유 설명서 페이지에서이 데이터를 쿼리하므로 두 세트 (제품 + 언어)가 있지만 작동하지 않습니다. 대개의 경우 언어 데이터 만 가져오고 때로는 예기치 않은 데이터가 발견되었다는 오류가 발생하지만 내가하는 일과 관계없이 원하는 데이터를 얻을 수 없습니다. 여기에 논리 오류가 있습니까? 아니면 내가 뭘 잘못하고 있습니까?
업데이트 : 여기까지 시도한 쿼리가 있습니다.
$product = Product::find($id)->productlanguage()->first();
그러나 이것은 매우 특이하지 않다고 느낍니다. 나에게도 모든 것을 가져다주는이 제품이 있습니다.
$products = Product::with('productlanguage')->get();
까다로운 부분은 제품의 언어 항목과 일치하는 제품 정보를 얻는 것입니다. 나는 이것을 시도 할 것이라고 생각한다 :
$products = ProductLanguage::with('product')->find($id);
나는이 전체적인 겉만 그르르른 일로 나의 머리를 싸려고 아직도 노력하고있다. 지금까지 도와 줘서 고마워.
어떻게 당신이 그것을 쿼리하는
그의 productlanguage을 모두 가진 제품을 얻으려면? –클래스가 잘 정의 된 것 같습니다. 컨트롤러에서 모델을 어떻게 쿼리하고 있습니까? – edi9999