2016-02-19 47 views
1

在一些基于laravel的包中,存在对未声明的属性的引用,但是该模型的表列的名称。laravel:在未声明的情况下访问属性

门票表:

id 
    name 
    content 

票务型号:

class Ticket extends Model { 

//there is no "protected $content;" defined inside model 
$this->content = foo; 
...... 

} 

没有模特属性创建动态基于模型的表列?

+1

是,laravel雄辩的列名映射到模型上的属性。这是ORM(对象关系映射器)的典型行为。请参阅:http://www.webgeekly.com/tutorials/php/the-benefits-of-using-object-relational-mapping-in-php/ – Mysteryos

回答

2

您需要在模型中设置$保护或$可填充https://laravel.com/docs/5.1/eloquent#mass-assignment。例如:

class Ticket extends model { 
    protected $guarded =[]; 
} 

这让我们访问所有表格列并更新它们。

class Ticket extends model { 
    protected $fillable = ['name', 'content']; 
} 

这使你可以访问列namecontent和UDPATE只有他们。

+0

thanks.so在设置$ guard或$ fillable之后,可以做:'$ this-> content = foo',注意我不是在问:'$ ticket-> content' – alex

+0

在你的模型exampleFunction(){$ this-> foo ='bar'; $这 - >保存(); } –

0

根据映射的数据库表列隐式声明模型属性。

遵守前面明确声明匹配表

protected $table = 'tablename'; 
相关问题