I have a Laravel Eloquent model User, which has a table with username and email columns. I need to add a property for the model on runtime, something like $user->secure. This property doesn't need to go to database.
When i add this property and hit $user->save() i get an error saying i don't have database column 'secure'. I can unset 'secure' before save but somehow it feels there should be a better way to do so. Any suggestions?
For those who still find this post (like I did), you may need to explicitly declare the property as
null
to prevent it from being automatically added to theattributes
array, and thus being added to INSERT/UPDATE queries:Source: http://laravel.io/forum/02-10-2014-setting-transient-properties-on-eloquent-models-without-saving-to-database
Just add an attribute to your class.
Note that it is better to declare it protected and add corresponding accessors and mutators (
getSecure
andsetSecure
methods) to your model.If you intend to make use of that add-on property, then
$append
will blow your mind.http://laraveldaily.com/why-use-appends-with-accessors-in-eloquent/