我想运行技能功能,但我不能.
Route.PHP
Route::get('setting',function(){
return \App\User::first()->skills();
});
user.PHP的
protected $casts = [
'skills' => 'json'
];
public function skills(){
return new Skills($this,$this->skills);
}
Skills.PHP
namespace App;
use App\User;
use Mockery\Exception;
class Skills
{
protected $user;
protected $skills = [];
public function __construct(User $user,array $skills){
$this->user=$user;
$this->skills=$skills;
}
}
我想进入/设置页面我有“响应内容必须是实现__toString()的字符串或对象,”对象“给出.”错误.
我尝试在路由中添加dd()函数的返回,我看到所有JSON数据但是$skills-> get(),$skill-> set()当时没有工作.
编辑:
Skills.PHP
<?PHP
/**
* Created by PHPStorm.
* User: root
* Date: 01.08.2015
* Time: 11:45
*/
namespace App;
use App\User;
use Mockery\Exception;
class Skills
{
protected $user;
protected $skills = [];
public function __construct(User $user,array $skills){
$this->user=$user;
$this->skills=$skills;
}
public function get($key){
return array_get($this->skills,$key);
}
public function set($key,$value){
$this->skills[$key]=$value;
return $this->duration();
}
public function has($key){
return array_key_exists($key,$this->skills);
}
public function all(){
return $this->skills;
}
public function merge(array $attributes){
$this->skills = array_merge(
$this->skills,array_only(
$attributes,array_keys($this->skills)
)
);
return $this->duration();
}
public function duration(){
return $this->user->update(['skills' => $this->skills]);
}
public function __get($key){
if ($this->has($key)) {
return $this->get($key);
}
throw new Exception("{$key} adlı Yetenek bulunamadı");
}
}
当你这样做
return \App\User::first()->skills();
您正在返回Relation定义对象,该对象未实现__toString()方法.返回相关对象需要的是
return \App\User::first()->skills;
这将返回一个包含相关技能的Collection对象 – 这将被正确序列化.