Laravel - makeVisible 不会使隐藏属性可见
Laravel - makeVisible doesn't make hidden attribute visible
我有以下代码:
$model = new coretable;
log::info($model->all());
$model = $model->makeVisible('id_coretable');
log::info($model->all());
在我的流明日志中,我得到以下结果:
[2020-02-26 10:14:19] local.INFO: [{"Internal_key":"TESTKEY_1"},{"Internal_key":"TESTKEY_2"},{"Internal_key":"TESTKEY_3"},{"Internal_key":"TESTKEY_4"},{"Internal_key":"TESTKEY_5"}]
[2020-02-26 10:14:19] local.INFO: [{"Internal_key":"TESTKEY_1"},{"Internal_key":"TESTKEY_2"},{"Internal_key":"TESTKEY_3"},{"Internal_key":"TESTKEY_4"},{"Internal_key":"TESTKEY_5"}]
我希望 "id_coretable"
属性出现在 log::info()
的第二个输出中,但事实并非如此。
这是为什么?
这是coretable的型号:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class CoreTable extends Model
{
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'coretable';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'Internal_key'
];
protected $hidden = [
'id_coretable',
'created_at',
'updated_at'
];
protected $primaryKey = 'id_coretable';
/**
* Many-To-Many relationship with User-Model.
*/
public function extensiontable_itc()
{
return $this->hasOne('App\extensiontable_itc', 'coretable_id');
}
public function extensiontable_sysops()
{
return $this->hasOne('App\extensiontable_sysops', 'coretable_id');
}
public function inaccessibletable()
{
return $this->hasOne('App\inaccessibletable', 'coretable_id');
}
}
我不知道为什么 makeVisible() 对效果没有任何影响。
您创建的初始模型对从 all()
函数接收的模型没有任何影响。这是一组具有初始 $hidden
数组的新模型。
要更改显示的值,您必须对收到的集合调用 makeVisible
:
$model = new coretable;
log::info($model->all());
log::info($model->all()->makeVisible('id_coretable'));
还建议静态调用查询函数,这样您就不需要创建初始模型:
log::info(coretable::all()->makeVisible('id_coretable'));
我有以下代码:
$model = new coretable;
log::info($model->all());
$model = $model->makeVisible('id_coretable');
log::info($model->all());
在我的流明日志中,我得到以下结果:
[2020-02-26 10:14:19] local.INFO: [{"Internal_key":"TESTKEY_1"},{"Internal_key":"TESTKEY_2"},{"Internal_key":"TESTKEY_3"},{"Internal_key":"TESTKEY_4"},{"Internal_key":"TESTKEY_5"}]
[2020-02-26 10:14:19] local.INFO: [{"Internal_key":"TESTKEY_1"},{"Internal_key":"TESTKEY_2"},{"Internal_key":"TESTKEY_3"},{"Internal_key":"TESTKEY_4"},{"Internal_key":"TESTKEY_5"}]
我希望 "id_coretable"
属性出现在 log::info()
的第二个输出中,但事实并非如此。
这是为什么?
这是coretable的型号:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class CoreTable extends Model
{
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'coretable';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'Internal_key'
];
protected $hidden = [
'id_coretable',
'created_at',
'updated_at'
];
protected $primaryKey = 'id_coretable';
/**
* Many-To-Many relationship with User-Model.
*/
public function extensiontable_itc()
{
return $this->hasOne('App\extensiontable_itc', 'coretable_id');
}
public function extensiontable_sysops()
{
return $this->hasOne('App\extensiontable_sysops', 'coretable_id');
}
public function inaccessibletable()
{
return $this->hasOne('App\inaccessibletable', 'coretable_id');
}
}
我不知道为什么 makeVisible() 对效果没有任何影响。
您创建的初始模型对从 all()
函数接收的模型没有任何影响。这是一组具有初始 $hidden
数组的新模型。
要更改显示的值,您必须对收到的集合调用 makeVisible
:
$model = new coretable;
log::info($model->all());
log::info($model->all()->makeVisible('id_coretable'));
还建议静态调用查询函数,这样您就不需要创建初始模型:
log::info(coretable::all()->makeVisible('id_coretable'));