Я ищу способ сопоставить результаты запросов базы данных Laravel/Eloquent с пользовательскими классами, а не по умолчанию класс Eloquent.Как сопоставить результаты Laravel/Eloquent с пользовательским классом
Имеет ли Laravel/Eloquent какое-либо встроенное средство для этого? Если нет, есть ли подходящее место, чтобы «зацепить» код генерации результата и сделать необходимое сопоставление?
В качестве примера, это примерно то, что я хотел бы достичь:
class User extends Eloquent {}
class MyUser
{
protected $name;
public function getName() {
return $this->name;
}
public function setName($name) {
$this->name = $name;
return $this;
}
}
$users = User::all();
// $users should now contain an array of MyUser instances
Мотивации/Причины вопроса
Мотивации этого вопроса, чтобы найти способ, в котором запрашивает может создавать объекты или массивы объектов, которые полностью независимы от структуры. Это связано с тем, что приложение Laravel, о котором идет речь, должно иметь возможность передавать свои результаты другим системам, отличным от Laravel, поэтому, следовательно, самые обычные объекты PHP (например, MyUser) имеют наибольший смысл.
вы можете получить объекты StdClass путем изменения режима выборки в конфигурации базы данных. Для определенного класса вам придется перезаписать этот класс, из чего я могу сказать '\ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Connection.php' – cecilozaur