Create your own BaseModel
class and override the following methods. Make sure all your other models extend
your BaseModel
.
namespace App;
use IlluminateFoundationAuthUser;
use IlluminateSupportStr;
class BaseUser extends User
{
public function getAttribute($key) {
if (array_key_exists($key, $this->relations)) {
return parent::getAttribute($key);
} else {
return parent::getAttribute(Str::snake($key));
}
}
public function setAttribute($key, $value) {
return parent::setAttribute(Str::snake($key), $value);
}
}
Then for usage:
// Database column: first_name
echo $user->first_name; // Still works
echo $user->firstName; // Works too!
This trick revolves around forcing the key to snake case by overriding the magic method used in Model
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…