Php 多语言网站,一对多的关系,在雄辩
我有一个问题是如何使用Elounting正确地建立和查询关系。我有产品,每个产品可以有多个名称/描述/价格,基于用户的区域设置。现在我的问题是,当我试图使用这种关系来更新与这些产品相关的数据时,我只能获取产品信息(库存、id、生产日期等)或语言信息,但不能同时获取两者。我一直在做这件事,查阅了大量有说服力的文件,但其中的例子并不广泛。以下是我的模型: 保存语言特定信息的表的模型:Php 多语言网站,一对多的关系,在雄辩,php,laravel-4,eloquent,Php,Laravel 4,Eloquent,我有一个问题是如何使用Elounting正确地建立和查询关系。我有产品,每个产品可以有多个名称/描述/价格,基于用户的区域设置。现在我的问题是,当我试图使用这种关系来更新与这些产品相关的数据时,我只能获取产品信息(库存、id、生产日期等)或语言信息,但不能同时获取两者。我一直在做这件事,查阅了大量有说服力的文件,但其中的例子并不广泛。以下是我的模型: 保存语言特定信息的表的模型: class ProductLanguage extends BaseModel { protected $
class ProductLanguage extends BaseModel {
protected $table = 'products_lang';
protected $fillable = array('title','description','price','language');
public function product(){
return $this->belongsTo('Product');
}
}
产品信息的模型:
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');
}
}
我几乎尝试了L4文档页面上描述的所有风格来查询这些数据,所以我有两套(产品+语言),但它根本不起作用。大多数情况下,我只获取语言数据,有时我会收到一个错误,说发现了意外数据,但无论我做什么,我都无法获取我想要的数据。这里有逻辑错误吗?或者我做错了什么
更新:以下是我到目前为止尝试的查询
$product = Product::find($id)->productlanguage()->first();
然而,这感觉很不具体。我还有一个能让我得到一切的:
$products = Product::with('productlanguage')->get();
棘手的部分是获取产品的语言条目以及匹配的产品信息。我想我要试试这个:
$products = ProductLanguage::with('product')->find($id);
我仍在试图对这整件雄辩的事情保持清醒的头脑。谢谢你迄今为止的帮助 这取决于你到底想要什么 要使用其所有productlanguage获得产品:
//This retrieves one product by id, and loads simultaneously the productlanguages
$product=Product::with('productlanguage')->find($id);
//This retrieves only the productlanguages as an Array
$productlanguages=$product->productlanguage;
或者反过来说:
$productLanguage=ProductLanguage::with('product')->find($id);
$product=$productLanguage->product;
您是如何查询它的?您的类似乎定义得很好。你是如何在你的控制器中查询模型的?这很酷,但我想反过来。我需要用它所属的产品加载一个特定的语言条目。酷!呵呵,我刚刚更新了我的问题。非常感谢你。我试试这个。至于我要找的$id,我想它应该是productlanguage表中的id,而不是product id,或者它是如何工作的?是的,id是product language id非常感谢您的帮助!您还知道如何在这种情况下获取特定语言吗?只需使用->whereLanguage('FR')->get()而不是find($id)。用你想搜索的内容替换FR。如果我帮助过你,请投我一票。