【问题标题】:How can joins be nested in Laravel 4.2 Query Builder连接如何嵌套在 Laravel 4.2 查询生成器中
【发布时间】:2016-02-05 05:32:18
【问题描述】:

我正在尝试使用 Laravel 4.2 查询生成器获取产品列表。 表相关如下

产品
products.product_category_id

产品类别
products.product_category_id = product_categories.id

产品类别翻译
product_categories.id = product_category_translations.product_category_id

我现在正在做的是……

$products = DB::table('products')->join('product_categories', function($join){
    $join->on('products.product_category_id','=','product_categories.id');          
});

我可以得到产品类别相关表的内容。但是如何嵌套另一个连接并从产品类别翻译表中获取相关数据?

【问题讨论】:

    标签: mysql laravel


    【解决方案1】:

    我建议您查看 laravel 文档以找到与模型建立关系的正确方法。 http://laravel.com/docs/4.2/eloquent#relationships

    然后您将创建类似

    的模型
    class Product extends Eloquent {
        public function category()
        {
            return $this->hasOne('ProductCategory');
        }
    }
    class ProductCategory extends Eloquent {
        public function product()
        {
            return $this->hasOne('Product');
        }
        public function translation()
        {
            return $this->hasOne('Translation');
        }
    ...
    

    然后要获取最后一个表,就像这样简单:

    $category = Category::find($categoryId);
    $translation= $category ->translation;
    

    或者,如果您拥有的 id 是 productId,您可以从产品表中使其相似。

    【讨论】:

    • 嗨,谢谢。也许我没有很好地解释自己。我的网站是多语言的,所以我不能为类别翻译建立一对一的关系。我在问如何使用查询生成器嵌套连接。我需要使用 Query Builder 而不是 Eloquent,因为我使用的是 yajra datatables 包,它不能与 eloquent 一起正常工作。
    猜你喜欢
    • 2015-11-17
    • 2016-11-16
    • 2018-06-02
    • 2017-11-02
    • 2017-05-26
    • 1970-01-01
    • 2022-01-20
    • 2020-06-20
    • 2021-01-01
    相关资源
    最近更新 更多