方法返回一个数组,并且选择查询不起作用

时间:2016-11-23 18:31:40

标签: php laravel

我的模型中有一个返回数组的方法:

     public function status($s_type)
        {
            if (!in_array($s_type, ['speed', 'health'])){
                return false;
            }

            $o_status = Status::where('name', strval($s_type))->first();
            $o_response = $this->statuses()
                ->where('status_id', $o_status->id)
                ->select('values', 'created_at')
                ->orderBy('created_at','DESC')
                ->first();

            if($o_response === null){
                return false;
            }

            return [
                'value' => $o_response->values,
                'timestamp' => $o_response->created_at
            ];
        }

I want to get the timestamp. So, I called this method in a controller. it uses an  

    public function status(){

        $client = new Client();
        $notification=Notification::where('active',1)->get();
        $status = Status::where('name', 'health')->first();

        foreach ($notification as $note) {

            $status_health = $note->status('health');
            $status_health['timestamp'];


            print_r($status_health);
            echo '<br>';
/*
            ;
            }*/
        }

    }

我想只打印时间戳?现在它正在打印整个对象。 Print_r只打印整个对象而不是时间戳。关联数组我真的很糟糕。

1 个答案:

答案 0 :(得分:0)

您确定这是我们理解问题所需的所有代码吗?我在这里问,因为错误消息显示您在数组上调用get(),但您提供的代码中get()仅使用了$notification = Notification::where('active',1)->get();

$response = $client->get($note->website_url);

(在查询构建器上调用 - &gt;有效)

get()

我无法在Illuminate\Database\Eloquent\Model中找到$client方法,但也许你写了一个或我错过了什么。在任何一种情况下,status($s_type)都不是数组,因此该行不能对错误负责。因此,我认为您的代码中某些部分的错误尚未显示给我们。

还有一件事引起了我的注意:在你的if (!in_array($s_type, ['speed', 'health'])){ return false; } 方法中,就在开头,你在说

$check_frequency = $note->status('timestamp');

然后您稍后使用

调用该方法
false

所以这将永远是retrievePeripheralsWithIdentifiers: