Laravel Inhalt Der Antwort enthalten sein muss eine Zeichenfolge oder ein Objekt Implementierung von __toString(), "Objekt" gegeben
Möchte ich laufen Fähigkeiten funktionieren, aber ich kann es.
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;
}
}
Will ich geben /Einstellungen Seite habe ich "The Response content must be a string or object implementing __toString(), "object" given.
" Fehler.
Habe ich versucht, hinzuzufügen dd()
Funktion ' Rückkehr in die route, sehe ich alle JSON-Daten, sondern $skills->get()
, $skill->set()
trifft nicht zu der Zeit arbeiten.
Edit:
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ı");
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie
sind Sie wieder, die Relation-definition Objekt, das nicht implementieren __toString() Methode. Was Sie brauchen, um wieder zurückkehren zu dem verwandten Objekt ist
Diese zurück Sammlung Objekt cotaining bezogenen Fähigkeiten - das wird richtig serialisiert.
Vielleicht könnten Sie gehen mit
get_object_vars($skills)
und späterloop
durch die Objekt-Variablen.Beispiel:
in der Route.php, zurückgeben einer Auflistung wie so
ODER
- Und auf Sie User.php Modell, können Sie den Faktor, der Ihren code so sagen
Ich hoffe, das jemand hilft.