Php 拉威尔雄辩的效率
我有一个Laravel4应用程序,其中有三个表:一个客户表、一个带有客户id列的订单表和一个带有订单id列的订单输出表 我的问题是,下面的代码是否足够有效,以满足我的要求,即查找登录用户是否已订购特定的输出id。将高度赞赏最佳做法Php 拉威尔雄辩的效率,php,mysql,laravel-4,Php,Mysql,Laravel 4,我有一个Laravel4应用程序,其中有三个表:一个客户表、一个带有客户id列的订单表和一个带有订单id列的订单输出表 我的问题是,下面的代码是否足够有效,以满足我的要求,即查找登录用户是否已订购特定的输出id。将高度赞赏最佳做法 public function getEdit($id) { $order = ShopOrder::find($id); $client = ShopClient::find($order->client_id);
public function getEdit($id) {
$order = ShopOrder::find($id);
$client = ShopClient::find($order->client_id);
$clientorders = ShopOrder::where('client_id', $client->id)->get();
$orderlist =array();
foreach ($clientorders as $co)
{
$orderlist[] =($co->id);
}
$orderoutputs = ShopOrderoutput::whereIn('order_id',$orderlist)->where('output_id', '22')->get();
$orderoutputslist = array();
foreach ($orderoutputs as $list)
{
$orderoutputslist[] = $list->output_id;
}
if (in_array(22, $orderoutputslist))
{
echo 'finally';
}
}
谢谢。如果您只想知道用户是否有具有特定输出id的订单,我会将查询合并为一个联合查询 我假设order_outputs表通过外键order_id与order_outputs表相关 我还假设您正在尝试查找客户机/用户是否有过订单号为22的订单 我不熟悉laravel中db查询的语法 在纯SQL中,这将是一个错误
SELECT id FROM orders
INNER JOIN order_output ON order.id = order_output.order_id
INNER JOIN clients on order.client_id = client.id
WHERE client.id = $client_id
AND order_output.output_id = 22;
然后数一数结果集,看看是否至少有一个
这样,您的数据库引擎将为您完成工作,而不是php代码必须循环遍历结果集