当使用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属性,除了让Example 2工作之外,我没有看到其他的解决方案。
3条答案
按热度按时间esbemjvw1#
由于
$visible
是在示例级别上设置的(也就是说,它不是一个在所有相同类型的模型之间共享的静态变量),不--没有更好的方法来做到这一点。baubqpgj2#
这是我为此发明的东西:
vfh0ocws3#
如果您打算只使用这些属性,可以尝试直接从查询中只使用
select
这些属性。