Laravel の Eloquent ORM を使用すると、モデルの $hidden および $visible プロパティを動的に設定できないようです。
例 1: これは動作します:
class User extends Eloquent {
$this->visible = array('field_name');
function read()
{
return User::all();
}
}
例 2: Eloquent クラスの visible プロパティを動的に設定しても機能しません:
class User extends Eloquent {
function read($visible = array('field_name'))
{
$this->visible = $visible; // Also tried: $this->setVisible($visible);
return User::all();
}
}
例 3: モデル自体では機能するが、熱心にロードされたモデルでは機能しないソリューション:
class User extends Eloquent {
function read($visible = array('field_name'))
{
$users = User::all();
return $users->get()->each(function($row) use ($visible) {
$row->setVisible($visible);
});
}
}
Eagerly Loaded Models で $visible プロパティを動的に設定するには、例 2 を機能させる以外に解決策がありません。しかし、どのように?