- モデルで表示する属性を制御する
Eloquentモデルでは、
$visible
と$hidden
プロパティを使用してモデルの属性を制御できます。$visible
には表示したい属性のリストを指定し、$hidden
には非表示にしたい属性のリストを指定します。例えば、以下のように使用します。
class Post extends Model
{
protected $visible = ['title', 'content'];
protected $hidden = ['secret_attribute'];
}
上記の例では、title
とcontent
属性は表示され、secret_attribute
は非表示になります。
- 剪定メソッドを定義する
Eloquentモデルには、
toArray
メソッドをオーバーライドして剪定ロジックを実装することもできます。以下に例を示します。
class Post extends Model
{
// ...
public function toArray()
{
$data = parent::toArray();
unset($data['secret_attribute']);
return $data;
}
}
上記の例では、toArray
メソッド内で$data
配列からsecret_attribute
を削除することで、剪定を行っています。
- リレーションシップの剪定 もしモデルにリレーションシップがある場合、関連する属性を剪定することもできます。例えば、以下のように使用します。
class Post extends Model
{
// ...
public function toArray()
{
$data = parent::toArray();
unset($data['secret_attribute']);
$data['comments'] = $this->comments->map(function ($comment) {
return $comment->only(['id', 'content']);
});
return $data;
}
}
上記の例では、comments
リレーションシップの各コメントモデルからid
とcontent
属性のみを抽出しています。
これらの方法を使用することで、Eloquentモデルを剪定し、必要な属性のみを表示することができます。お好みの方法を選択し、モデルをスリムに保つために活用してください。