you can unset that property in the model event saving
Try to explicitly declare the variable in your User class, e.g.
class User extends Eloquent {
...
public $suspicious = false; //a default value
...
}
In this case, __set() shouldn't be executed for the declared variable, which therefore wouldn't be added to the $attributes array (note that only the items contained in the $attributes array will be saved).
PS: IMO, Laravel should really provide a "transient" and a "persistent" array the same way it provides the fillable/guarded ones. Do you have time for a pull request?
I think I tried explicitly declaring the property and it still tried to save it to the database, but I was very tired when I was working last night so I will try again.
I did manage to extend Model and I think it only requires a simple change to getDirty()
to check if the key is set in a transient array. So when I get home I will do a pull request for that change if it turns out explicit declaration doesn't work.
zenry, great suggestion, I think that will be a good fallback solution.
Edit: quick update. The problem I had before was that I simply didn't initialize the property with a default as was suggested. Giving it a default kept it out of the attributes for saving it in the database, so this has resolved the issue.
Sign in to participate in this thread!