Php 使用Laravel 5.2简化额外数据的查询
我有一个查询,需要根据第一次查询的结果提供更多信息。这是密码Php 使用Laravel 5.2简化额外数据的查询,php,mysql,laravel,laravel-5.2,Php,Mysql,Laravel,Laravel 5.2,我有一个查询,需要根据第一次查询的结果提供更多信息。这是密码 $params = DB::select('SELECT vpl_ppid, vpl_name, vpl_display, vpl_filter FROM vw_parameter_list WHERE vpl_slug = :type', ['type' => $type]); foreach ($params as $param) {
$params = DB::select('SELECT vpl_ppid, vpl_name, vpl_display, vpl_filter
FROM vw_parameter_list
WHERE vpl_slug = :type', ['type' => $type]);
foreach ($params as $param) {
$pd_vals = DB::select('SELECT * FROM parameter_distinct_value WHERE pd_ppid = :vpl_ppid ORDER BY pd_value', ['vpl_ppid' => $param->vpl_ppid]);
$param->value_list = $pd_vals;
}
如上所示,我只需创建一个新数组($param->value\u list
)即可将更多数据加载到其中。
如何通过消除
foreach
中的查询来简化查询,以实现与上述相同的速度和输出。谢谢您可以使用子查询:
$results = DB::select('
SELECT *
FROM
parameter_distinct_value
WHERE pd_ppid IN(
SELECT vpl_ppid FROM vw_parameter_list WHERE vpl_slug = :type
)
ORDER BY pd_value
', ['type' => $type]);
还是加入
$results = DB::select('
SELECT pdv.*
FROM
parameter_distinct_value pdv
INNER JOIN vw_parameter_list vpl ON vpl.vpl_ppid = pdv.pd_ppid
WHERE vpl.vpl_slug = :type
ORDER BY pdv.pd_value
', ['type' => $type]);
实际上,当查询表
vw_parameter_list
时,我需要几个字段,从laravel的集合($params
)中可以看到,我只需创建额外的键
,将更多数据加载到其中。我已经修改了我上面的问题,如果你有模型,你可以修改用户关系,因为我不使用模型,因为它是从遗留数据库改编的