【问题标题】:Passin args to laravel eloquent api resources constructor将 args 传递给 laravel eloquent api 资源构造函数
【发布时间】:2020-02-26 06:44:19
【问题描述】:

我如何将 args 传递给 Laravel Eloquent API Resources 构造函数并将其传递给响应时返回的条件数据?

我尝试了什么:

控制器

$user = User::find(1);
return new UserResource($user, $shortData = true);

API 资源:

public function toArray($request, $shortData)
{
    if($short) {
        return $shortData;
    } else {
        return $fullData;
    }
}

【问题讨论】:

  • 我尝试了什么:什么是错误/结果?
  • @Tpojka 没有错误结果。这段代码只对我不起作用。 $shortData 的设置值在这两种情况下返回完整数据时为真或假

标签: laravel eloquent laravel-6


【解决方案1】:

你必须这样做:

  • 在您的构造函数中添加条件数据(就像您所做的那样)。此条件数据可以为空:
$user = User::find(1);
return new UserResource($user, $conditionalData);
  • 然后在您的 UserResource 中,将条件数据添加为私有属性,并像这样将其添加到您的构造函数中(它也适用于 PHP 默认参数值...):
private $conditionalData;

    public function __construct(User $resource, ?string $conditionalData)
    {
        parent::__construct($resource);
        $this->conditionalData = $conditionalData;
    }
public function toArray($request)
    {
        return [
            'data_1' => $this->data1,
            'data_2' => $this->data2,
            'conditional_data' => $this->when(!is_null($this->conditionalData), $this->$conditionalData)
        ];
    }

仅当属性不为空时,您的条件数据才会出现在您的响应中。

【讨论】:

    猜你喜欢
    • 2019-08-25
    • 1970-01-01
    • 2018-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    • 2011-09-24
    相关资源
    最近更新 更多