加入来自其他模型的列
join column from other model
您好,我有两个模型类别和产品。 Category 模型具有如下 table 结构:"id, name" 并且 Product 具有:"id, name, category_id"
当我 return 所有产品时,我希望 category_id 字段替换为 "name" 中相应的值 "categories" table.
示例:
类别:
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
我认为 Laravel 实现它并保持数据库不可知的方法将执行以下操作。 (仅供参考 - 我正在使用 Laravel 5 命名空间。)
在您的产品模型中定义了正确的类别关系,如下所示:
class Product extends Model {
public function category(){
return $this->hasOne('App\Category'); //Laravel 5 Namespacing included
}
}
然后在你的控制器中调用:
$products = Product::with('category')->get();
最后,在 blade 的 foreach 循环中,您可以使用它来访问类别名称:
@foreach($products as $product)
$product->category->name
@endforeach
但您始终可以使用 Laravel 的 QueryBuilder Class 来创建手动连接,也可以这样。
$products = Product::join('categories', 'categories.id', '=', 'products.category_id')
->selectRaw('products.id, products.name, categories.name as category_id')
->get();
将所有产品放入一个变量
$products = Product::all();
现在对该变量使用 for 循环
foreach ($products as $product)
{
$id = $product->category_id;
$category = Category::find($id)->name;
$product->category_id = $category;
$product->save();
}
您好,我有两个模型类别和产品。 Category 模型具有如下 table 结构:"id, name" 并且 Product 具有:"id, name, category_id"
当我 return 所有产品时,我希望 category_id 字段替换为 "name" 中相应的值 "categories" table.
示例:
类别:
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
我认为 Laravel 实现它并保持数据库不可知的方法将执行以下操作。 (仅供参考 - 我正在使用 Laravel 5 命名空间。)
在您的产品模型中定义了正确的类别关系,如下所示:
class Product extends Model {
public function category(){
return $this->hasOne('App\Category'); //Laravel 5 Namespacing included
}
}
然后在你的控制器中调用:
$products = Product::with('category')->get();
最后,在 blade 的 foreach 循环中,您可以使用它来访问类别名称:
@foreach($products as $product)
$product->category->name
@endforeach
但您始终可以使用 Laravel 的 QueryBuilder Class 来创建手动连接,也可以这样。
$products = Product::join('categories', 'categories.id', '=', 'products.category_id')
->selectRaw('products.id, products.name, categories.name as category_id')
->get();
将所有产品放入一个变量
$products = Product::all();
现在对该变量使用 for 循环
foreach ($products as $product)
{
$id = $product->category_id;
$category = Category::find($id)->name;
$product->category_id = $category;
$product->save();
}