Php 多语言网站,一对多的关系,在雄辩

Php 多语言网站,一对多的关系,在雄辩,php,laravel-4,eloquent,Php,Laravel 4,Eloquent,我有一个问题是如何使用Elounting正确地建立和查询关系。我有产品,每个产品可以有多个名称/描述/价格,基于用户的区域设置。现在我的问题是,当我试图使用这种关系来更新与这些产品相关的数据时,我只能获取产品信息(库存、id、生产日期等)或语言信息,但不能同时获取两者。我一直在做这件事,查阅了大量有说服力的文件,但其中的例子并不广泛。以下是我的模型: 保存语言特定信息的表的模型: class ProductLanguage extends BaseModel { protected $

我有一个问题是如何使用Elounting正确地建立和查询关系。我有产品,每个产品可以有多个名称/描述/价格,基于用户的区域设置。现在我的问题是,当我试图使用这种关系来更新与这些产品相关的数据时,我只能获取产品信息(库存、id、生产日期等)或语言信息,但不能同时获取两者。我一直在做这件事,查阅了大量有说服力的文件,但其中的例子并不广泛。以下是我的模型:

保存语言特定信息的表的模型:

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。如果我帮助过你,请投我一票。