在Products表中,我有store_id列,用于连接产品和商店。
在我使用Angular的APIController中,我有这个return语句。我正在退回一系列产品。
return Product::where('category_id', $category->id)
->select(array('id', 'name', 'newprice', 'image',
'store_id', 'link'))
->paginate(20);
我的问题是,我想要返回商店名称而不是返回store_id(来自products表),而不是存储在同一个表中。有没有办法做到这一点? 我唯一的选择是使用JOIN吗?
答案 0 :(得分:0)
我建议您使用这样的Laravel(/ Eloquent)关系:
$productFieldArray = ['id', 'name', 'newprice', 'image', 'store_id', 'link'];
$product = Product::where('category_id', $category->id)
->select(productFieldArray)
->paginate(20);
// Get the value you want (I guess it's the name attribute?)
$store = $product->store->name;
Product.php:
...
public function store() {
return $this->belongsTo('App\Store');
}
...
Store.php:
...
public function products() {
return $this->hasMany('App\Product');
}
...
您必须在查询中使用with()函数来指出您希望接收商店数据。请参阅:Laravel - accessing relationship Models with AngularJS或http://laravel.com/docs/4.2/eloquent#eager-loading。
所以你的查询将是:
Product::with('store')
->where('category_id', $category->id)
->select(productFieldArray)
->paginate(20);