我在我的模型代码中使用以获得关系
class User extends Authenticatable
{
...
public function extensions()
{
return $this->belongsToMany(Extension::class, 'v_extension_users', 'user_uuid', 'extension_uuid');
}
...
}
Run Code Online (Sandbox Code Playgroud)
该扩展名具有现场密码隐藏.
class Extension extends Model
{
...
protected $hidden = [
'password',
];
...
}
Run Code Online (Sandbox Code Playgroud)
在某些情况下,我想makeVisible密码字段.
我怎样才能做到这一点?
->makeVisible([...]) 应该管用:
$model = \Model::first();
$model->makeVisible(['password']);
$models = \Model::get();
$models = $models->each(function ($i, $k) {
$i->makeVisible(['password']);
});
// belongs to many / has many
$related = $parent->relation->each(function ($i, $k) {
$i->makeVisible(['password']);
});
// belongs to many / has many - with loading
$related = $parent->relation()->get()->each(function ($i, $k) {
$i->makeVisible(['password']);
});
Run Code Online (Sandbox Code Playgroud)
好吧,我从/sf/answers/2680851351/得到了这个想法
由于我的关系模型Extension::class是在代码中按名称调用的,因此return $this->belongsToMany(Extension::class,...我什至无法将参数传递给它的构造函数。
因此,为了将某些内容传递给构造函数,我可以使用静态类变量。
因此,在我的Extension模型中,我添加静态变量并运行 makeVisible 方法。后来我破坏了变量,以确保下一个调用和实例使用默认模型设置。
我将其移至一个特征,但在这里我展示了我的模型示例。
class Extension extends Model
{
public static $staticMakeVisible;
public function __construct($attributes = array())
{
parent::__construct($attributes);
if (isset(self::$staticMakeVisible)){
$this->makeVisible(self::$staticMakeVisible);
}
}
.....
public function __destruct()
{
self::$staticMakeVisible = null;
}
}
Run Code Online (Sandbox Code Playgroud)
在我的关系中我使用这样的东西
class User extends Authenticatable
{
...
public function extensions()
{
$class = Extension::class;
$class::$staticMakeVisible = ['password'];
return $this->belongsToMany(Extension::class, 'v_extension_users', 'user_uuid', 'extension_uuid');
}
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5017 次 |
| 最近记录: |