从其他模型加入列

时间:2015-04-21 15:25:15

标签: laravel eloquent

您好我有两个型号分类和产品。 Category模型的表结构如下:“id,name”,产品具有:“id,name,category_id”

当我退回所有产品时,我希望将category_id字段替换为“categories”表中相应的“name”值。

实施例

分类

id    name
1     cloth
2     food

产品

id    name      category_id
1     carrot    2
2     pants     1
3     shirt     1

结果

id    name      category_id
1     carrot    food
2     pants     cloth
3     shirt     cloth

2 个答案:

答案 0 :(得分:1)

我认为Laravel这样做并且保持数据库不可知的方法会做到以下几点。 (仅供参考 - 我使用的是Laravel 5命名空间。)

在您的产品型号中定义了正确的类别关系,如下所示:

class Product extends Model {

     public function category(){
        return $this->hasOne('App\Category'); //Laravel 5 Namespacing included
    }

}

然后在你的控制器中你会打电话:

$products = Product::with('category')->get();

最后在你的刀片的foreach循环中,你可以使用它来访问类别名称:

@foreach($products as $product)
    $product->category->name
@endforeach

但是你总是可以使用Laravel的QueryBuilder类来创建手动连接。

$products = Product::join('categories', 'categories.id', '=', 'products.category_id')
            ->selectRaw('products.id, products.name, categories.name as category_id')
            ->get();

答案 1 :(得分:-2)

我猜你需要这样的东西:

更新产品 SET category_id = Categories.name 从类别 WHERE Products.category_id = Categories.id;

更新:这也可能有所帮助:

更新产品加入类别 ON Products.category_id = Categories.id SET category_id = Categories.name;

相关问题