Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Laravel 5.1数据库查询联接_Mysql_Laravel_Join_Laravel 5.1 - Fatal编程技术网

Mysql Laravel 5.1数据库查询联接

Mysql Laravel 5.1数据库查询联接,mysql,laravel,join,laravel-5.1,Mysql,Laravel,Join,Laravel 5.1,我有两张桌子: products: id, name, manufacturer myproducts:id, user_id, product_id 我通过身份验证令牌知道用户的id。使用此用户id令牌,希望从myproducts获取产品id和id,然后查询products表以获取名称和制造商,其中MyMPProducts中的产品id与products表中的id匹配。目标是向用户提供一个可编辑列表,用户可以在myproducts表中编辑该列表 到目前为止,我只能做到 $productlist

我有两张桌子:

products: id, name, manufacturer
myproducts:id, user_id, product_id
我通过身份验证令牌知道用户的id。使用此用户id令牌,希望从myproducts获取产品id和id,然后查询products表以获取名称和制造商,其中MyMPProducts中的产品id与products表中的id匹配。目标是向用户提供一个可编辑列表,用户可以在myproducts表中编辑该列表

到目前为止,我只能做到

$productlist = DB:table('myproducts')->where('user_id', $userid)->get();
这将返回用户拥有的所有产品。但是我在加入表以返回用户拥有的每个产品的产品数据时遇到困难

有什么建议吗

伪代码:

Select * from myproducts wheer user_id = $userid

对于每个产品->获取产品名称和制造商,其中id等于product_id

您可以使用DB::table查询来实现这一点,但在Laravel中实现这一点的最佳方法是使用雄辩的关系

$all_products = \DB::table('myproducts')
                 ->leftjoin('products', 'products.id', '=','myproducts.id')
                 ->where('myproducts.user_id','=',\Auth::user()->id)
                 ->WhereNull('products.deleted_at')
                 ->get();
为两个表创建一个模型,然后使用模型定义表之间的关系

完成此操作后,获取用户拥有的产品的产品数据非常简单:

$productData = User::find(1)->product;
我强烈建议观看这篇关于建立雄辩关系的教程,它很好地解释了这一点:


它稍微调整了一下就工作了。我也想从我的产品中获得id。我最终加入了一个join而不是leftjoin,并在join之后调用了表中的products和myproducts。还提供了$user\u id,因为我使用的身份验证机制与现成的Laravel身份验证不同。谢谢你的帮助。如果我能找到产品,这种方法就会奏效。但我希望查询多个表。多对多的关系很可能会奏效,但对我现在所做的事情来说,这将是一种过度的杀伤力。我所需要的只是RESTfulAPI中的一个函数来执行CRUD。谢谢你的帮助。