我想运行技能功能,但我不能.
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对象 – 这将被正确序列化.