您好我有两个型号分类和产品。 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
答案 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;