передать дополнительные параметры Laravel Eloquent API Resources - PullRequest
0 голосов
/ 27 февраля 2020

Я работаю с laravel api Resources и мне крайне необходимо передать некоторые дополнительные параметры в api Resources

здесь я вставляю код моего контроллера:

return response()->json([
   'countries' => CountryResource::collection($countries, 'en')
], 200);

здесь с коллекцией я передаю фиктивные данные, которые мне нужны в Ресурсе, помните, что будет несколько номеров параметров, которые нужно было передать Ресурсу.

Теперь позвольте мне вставить код моего Ресурса

private $language;

public function __construct($resource, $language)
{
    // Ensure you call the parent constructor
    parent::__construct($resource);
    $this->resource = $resource;

    $this->language = $language;
}


public function toArray($request)
{
    return [
        'language' => $this->language,
        'id' => $this->id,
        'name' => $this->name,
    ];
}

Я получаю данные здесь в переменной "language", но проблема в том, что я не получаю то, что я передаю, это показывает мне целые числа, такие как "0", "1", как это, но я передал "en"

Я испробовал много решений от stackoverflow, но у меня не получилось

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Внутри вашей модели измените код так:

protected $language;

# appends language attribute to array
protected $appends = [
    'language'
];

# get language using accessor
public function getLanguageAttribute()
{
    return $this->language;
}
0 голосов
/ 27 февраля 2020

Добро пожаловать в переполнение стека. Вы на правильном пути, но вы забыли добавить id и name к вашему __construct. Это должно выглядеть так


private $language;
private $id;
private $name;

public function __construct($resource, $language,$id,$name)
{
    // Ensure you call the parent constructor
    parent::__construct($resource);
    $this->resource = $resource;

    $this->language = $language;
    $this->id = $id; 
    $this->name = $name;
}


public function toArray($request)
{
    return [
        'language' => $this->language,
        'id' => $this->id,
        'name' => $this->name,
    ];
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...