Temporary property for Laravel Eloquent model

后端 未结 3 2029
北荒
北荒 2021-02-18 16:13

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 pr

相关标签:
3条回答
  • 2021-02-18 16:49

    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 the attributes array, and thus being added to INSERT/UPDATE queries:

    class User extends Eloquent {
        public $secure = null;
    
        // ...
    }
    

    Source: http://laravel.io/forum/02-10-2014-setting-transient-properties-on-eloquent-models-without-saving-to-database

    0 讨论(0)
  • 2021-02-18 17:04

    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/

    0 讨论(0)
  • 2021-02-18 17:14

    Just add an attribute to your class.

    class User extends Eloquent {
      public $secure;
    
      // ...
    }
    

    Note that it is better to declare it protected and add corresponding accessors and mutators (getSecure and setSecure methods) to your model.

    0 讨论(0)
提交回复
热议问题