Laravel 5.1 DBQuery加入

时间:2015-11-26 04:52:41

标签: mysql laravel join laravel-5.1

我有两张桌子:

products: id, name, manufacturer
myproducts:id, user_id, product_id

我通过我的身份验证令牌知道user_id。使用此user_id标记,希望从myproducts获取product_id和id,然后查询products表以获取product产品中product_id与mymproducts中的id匹配的名称和制造商。目标是为用户提供可编辑的列表,他/她可以在myproducts表中进行编辑。

到目前为止,我只能做

$productlist = DB:table('myproducts')->where('user_id', $userid)->get();

这将返回用户拥有的所有产品。但是我无法加入表格以返回用户拥有的每个产品的产品数据。

有什么建议吗?

伪代码:

Select * from myproducts wheer user_id = $userid
每个产品

- >获取id等于product_id的产品名称和制造商

2 个答案:

答案 0 :(得分:3)

您可以使用DB :: table查询执行此操作,但在Laravel中执行此操作的最佳方法是使用Eloquent关系。

为两个表创建Model,然后使用模型定义表之间的关系。

完成后,获取用户拥有的产品的产品数据就像这样简单:

$productData = User::find(1)->product;

我强烈建议您观看有关设置Eloquent关系的本教程,它解释得非常好:

https://laracasts.com/series/laravel-5-fundamentals

答案 1 :(得分:2)

$all_products = \DB::table('myproducts')
                 ->leftjoin('products', 'products.id', '=','myproducts.id')
                 ->where('myproducts.user_id','=',\Auth::user()->id)
                 ->WhereNull('products.deleted_at')
                 ->get();