Я хотел бы включить добавленные атрибуты во время создания моего ответа API в классе ресурсов.
Для этого у меня есть класс модели под названием Article.php.
class Article extends Model
{
protected $table = 'articles';
protected $fillable = ['id', 'articleNo'];
protected $appends = ['is_available'];
public function getIsAvailableAttribute() {
return true;
}
СтатьяController.php
public function index() {
$articles = Article::all();
return ArticleResource::collection($articles);
}
СтатьяResource.php
class ArticleResource extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'articleNumber' => $this->articleNo,
'isAvailable' => $this->is_available,
];
}
}
Когда я пытаюсь запустить свой код, он выдает следующую ошибку:
ErrorException (E_NOTICE) Undefined property: stdClass::$is_available
если я удалю строку isAvailable из моего ArticleResource, это сработает.
Извините, моя ошибка, это должно быть доступно, я только что исправил это в вопросе
Я думаю, что если вы сделаете return Article::get() в своем index(), он вернет все appends
Но тогда он не пройдет через ArticleResource, не так ли?






Я не вижу никакого кода, ищущего свойство
in_stock. Я не думаю, что проблема где-то в коде, который вы разместили до сих пор.