Vic*_*Vic 0 model typing this laravel laravel-5.1
我有一个带有布尔字段的雄辩模型.数据库中的列是a tinyint(1),值正确存储为1.如果我在类之外的任何给定上下文中访问此值,我将获得正确的值:
$myModel = MyModel::first();
var_dump($myModel->visible); //outputs 1
Run Code Online (Sandbox Code Playgroud)
当我在模型类中的方法内访问它时虽然....
class MyModel {
public function isVisible(){
var_dump($this->visible);
// return $this->visible && $this->approved; // another true value
}
}
//on tinker
>> $myModel->isVisible();
array(0) {
}
>>
Run Code Online (Sandbox Code Playgroud)
我知道这听起来很疯狂,但我已经在这里呆了两个小时而且无法使它发挥作用.我错过了什么?
Laravel的Model类已经有了一个protected $visible属性.你可能已经猜到了,这是一个数组.从类中访问时,它可以访问此protected属性,因此它将返回该数组.在类外部访问时,它使用PHP的魔术__get方法,因此它返回列的值.
如果可能,您可以重命名列以防止任何潜在的未来冲突.否则,您可以isVisible()使用该getAttribute方法更改方法以访问模型的列值,而不是像这样访问模型的属性:
public function isVisible(){
return $this->getAttribute('visible') && $this->approved;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
268 次 |
| 最近记录: |