APIリソースを作成しました。toArray()
メソッドでは、どの属性がクエリ文字列で返されるかをフィルタリングしました。私は、APIリソースのほとんどでこれを実行できるようにしたいので、これを再利用可能なメソッドに移すのが理にかなっています。これを行う最善の方法は何でしょうか?Laravel、Reusable APIリソースメソッド
私は基本Resource
の延長を考えていたが、私はそれをやって行くだろうかどうかはわかりません。または、サービスクラスまたはリポジトリに移動する必要がありますか?
私の方法は以下の通りです。 ProjectResource.php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\Resource;
class ProjectResource extends Resource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request
* @return array
*/
public function toArray($request)
{
dd(parent::filterFields());
// or
dd($this->filterFields());
if($request->fields) {
$fields = [];
$selectedFields = explode(',', $request->fields);
foreach($selectedFields as $field) {
if(isset($this->{$field})) {
$fields[$field] = $this->{$field};
}
}
return $fields;
} else {
return parent::toArray($request);
}
}
}
test.phpをを
:
public function toArray($request)
{
if($request->fields) {
$fields = [];
$selectedFields = explode(',', $request->fields);
foreach($selectedFields as $field) {
if(isset($this->{$field})) {
$fields[$field] = $this->{$field};
}
}
return $fields;
} else {
return parent::toArray($request);
}
}
理想的には、私は...のような何かを
public function toArray($request)
{
if($request->fields) {
return parent::filterFields($request); // Not sure whether it should be parent::, $this or something else?
} else {
return parent::toArray($request); // Not sure whether it should be parent::, $this or something else?
}
// or event just
return parent::filterFields($request); // Not sure whether it should be parent::, $this or something else?
}
全クラスたいです
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\Resource;
class Test extends Resource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request
* @return array
*/
public function filterFields($request)
{
return 'test';
}
}
ありがとうございます!
私はどちらもが、両方を試していないリソースクラスを返しget_parent_class' '、働いていたが、私は、'親:: filterFields() 'や'ます$ this-> filterFields() '私は'未定義のメソッドのApp \プロジェクトに呼び出しますしようとすると、 :: filterFields() '、それは別のクラスを参照しているようです? – KeironLowe
フルクラスを投稿できますか? – Devon
私の質問が更新されました – KeironLowe