当前位置: 首页 > 知识库问答 >
问题:

带Laravel的neasted模型的快速加载问题

姬旭
2023-03-14

任何想法为什么下面的代码是正常工作,返回设备与传感器和测量

public function getLastMinutes($device_id,$sensor_id,$minutes = 10) {
...
        $devices = Auth::user()->devices()->where("device_id",$device_id)->with(array('sensors.measurements' => function($query) use ($minutes,$sensor_id) {
            $date = new DateTime;
            $date->modify(-1*$minutes.' minutes');
            $formatted_date = $date->format('Y-m-d H:i:s');

            $query->where('measurements.created_at','>=',$formatted_date);

        }))->get()->toArray();
        return Response::json($devices);
...

但是,当我添加第二个where(“sensor_id”,$sensor_id)时,返回的json对象中的度量值消失了

public function getLastMinutes($device_id,$sensor_id,$minutes = 10) {
...
        $devices = Auth::user()->devices()->where("device_id",$device_id)->with(array('sensors.measurements' => function($query) use ($minutes,$sensor_id) {
            $date = new DateTime;
            $date->modify(-1*$minutes.' minutes');
            $formatted_date = $date->format('Y-m-d H:i:s');

            $query->where("sensor_id",$sensor_id)->where('measurements.created_at','>=',$formatted_date);

        }))->get()->toArray();
        return Response::json($devices);
...

我遗漏了什么?

谢谢你的帮助!

共有1个答案

晋承嗣
2023-03-14

我解决了这个问题。通过在对象查询中使用(数组('sensors.measures…)执行,您无法访问传感器…这意味着通过执行此$query-

所以从这个(错)

    public function getLastMinutes($device_id,$sensor_id,$minutes = 10) {
...
        $devices = Auth::user()->devices()->where("device_id",$device_id)->with(array('sensors.measurements' => function($query) use ($minutes,$sensor_id) {
            $date = new DateTime;
            $date->modify(-1*$minutes.' minutes');
            $formatted_date = $date->format('Y-m-d H:i:s');

            $query->where("sensor_id",$sensor_id)->where('measurements.created_at','>=',$formatted_date);

        }))->get()->toArray();
        return Response::json($devices);
...

到这个(正确)

...
$devices = Auth::user()->devices()->where("device_id",$device_id)
            ->with(array('sensors' => function($query) use ($sensor_id) {
                $query->where('sensors.sensor_id',$sensor_id);
            }))
            ->with(array('sensors.measurements' => function($query) use ($minutes,$sensor_id) {
                $date = new DateTime;
                $date->modify(-1*$minutes.' minutes');
                $formatted_date = $date->format('Y-m-d H:i:s');
                $query->where('measurements.created_at','>=',$formatted_date);
            }))
            ->get()->toArray();
            return Response::json($devices);
...

小提示。laravel-dedegbar是一个伟大的项目,你应该去看看,但它实际上并没有帮到我,因为我有一个SPA,Laravel正在做一个RESTFUL json服务器,出于某种原因laravel-degbar没有启动...但是这个小这段代码非常棒(摘自在Laravel 3/4中执行查询)

        $queries = DB::getQueryLog();
        $last_query = end($queries);
        return Response::json($last_query);

希望能帮助你

 类似资料:
  • Keras泛型模型接口是用户定义多输出模型、非循环有向模型或具有共享层的模型等复杂模型的途径 这部分的文档假设你已经对Sequential模型已经比较熟悉 让我们从简单一点的模型开始 第一个模型:全连接网络 Sequential当然是实现全连接网络的最好方式,但我们从简单的全连接网络开始,有助于我们学习这部分的内容。在开始前,有几个概念需要澄清: 层对象接受张量为参数,返回一个张量。张量在数学上只

  • 问题内容: 从CSV加载数据似乎比从Pandas的SQL(Postgre SQL)加载数据要快。(我有一个固态硬盘) 这是我的测试代码: foo.csv和数据库是相同的(两个列中的数据和列数相同,4列,100000行充满随机int)。 CSV需要0.05秒 SQL花费0.5秒 您认为CSV比SQL快10倍是正常的吗?我想知道我是否在这里错过了什么… 问题答案: 这是正常现象,读取csv文件始终是简

  • 当我通过VS代码运行我的网页时,我的所有图片都会显示出来,但由于某种原因,当我通过localhost运行网页时,没有任何图片或CSS被发送。这是我下面的代码,任何帮助都将不胜感激。我曾试图在网上找到解决方案,但迄今为止似乎没有任何效果。 这是我的文件结构

  • Sequential是多个网络层的线性堆叠 可以通过向Sequential模型传递一个layer的list来构造该模型: from keras.models import Sequential from keras.layers import Dense, Activation model = Sequential([ Dense(32, input_dim=784), Activation('

  • 我有一个问题,就是基于hasMany关系从数据库中获取数据并将其发送到Larave中的api。在下面的代码中,Laravel没有给我客户id=$id的产品。我不知道为什么,我不能在$query旁边发送$id。如果我把号码写在“我有很好的安全套,但我需要自动拿。 所有api代码 先谢谢你。

  • 图片是放在金蝶服务器上,前端页面el-image的src放图片的访问路径,加载的速度得4 5秒吧,请问大神这种情况怎么优化,使图片的加载速度变快?