我是laravel
初学者,没有为我的问题找到解决方案。
我创建了一个表单,将urlname输入database
- 工作正常。
但对于pagespeed
变量,我总是会收到此错误:
这是我的控制器的一部分:
//Create URL
$url = new URL;
$url->urlname= $request->input('urlname');
$url->pagespeed= $pspeed;
//Save url
$url->save();
//Return redirect
return redirect('/');
我把它放在我的迁移中:
public function up()
{
}
也许有人可以帮我解决这个问题。
答案 0 :(得分:0)
您需要保存getResults()
函数结果而不是整个对象,请尝试以下方式:
public function create(Request $request) {
$pspeed = new \PageSpeed\Insights\Service();
$pspeedResult = $pspeed->getResults('https://www.example.com');
//Create URL
$url = new URL;
$url->urlname = $request->input('urlname');
$url->pagespeed = json_encode($pspeedResult);
//Save url
$url->save();
//Return redirect
return redirect('/');
}
从数据库中取回数据时,请记住将数据从json解码到数组$data = json_decode($url->pagespeed, true);
您也可以使用mutators代替手动解码/编码数组。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class URL extends Model
{
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'pagespeed' => 'array',
];
}
答案 1 :(得分:0)
// You are making a new PageSpeed object
$pspeed = new \PageSpeed\Insights\Service();
// Next you are getting the results for an url.
// You are not assigning the results to any variable
$pspeed->getResults('https://www.example.com');
...
// Now you are trying to fill the $url->pagespeed with
// the PageSpeed object instead of the results.
// This cause the error.
$url->pagespeed= $pspeed;
解决方案可能是:
$pspeed = new \PageSpeed\Insights\Service();
// Assigning it to a variable:
$results = $pspeed->getResults('https://www.example.com');
...
// Storing the results, instead of the PageSpeed object
$url->pagespeed= $results;
注意getResults(...)返回一个数组。
答案 2 :(得分:0)
您需要先在json中对对象进行编码,以便将其存储在字符串类型列中。
所以
$pspeed->getResults('https://www.example.com');
$url->pagespeed= $pspeed;
需要改为
$results = $pspeed->getResults('https://www.example.com');
$url->pagespeed= json_encode($results );