laravel 這個框架有時候管的太寬了,當你執行 $this->save()的時候,會自動填充update_at 和 created_at ,往往數據表並沒有這兩個字段或者根本不是這麼命名的,這個時候需要更改類常量
定位到 Illuminate\Database\Eloquent\Model; 進去你會發現,有兩個常量
const CREATED_AT = 'created_at';
const UPDATED_AT = 'updated_at';
我們最好不要去基層類裏面修改框架源碼,不是說不行,只是在多人合作項目裏你會影響到別人的代碼。
直接在類裏面“修改”常量就是了。
(爲啥常量能修改?額,常量確實不能修改,但是在類裏面的類常量,是可以繼承的。如果子類重新定義這個常量,那將不會繼承父類的常量。所謂的修改其實是重新定義了一個。)
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Request;
class User extends Model
{
const UPDATED_AT = 'UpdateTime';
const CREATED_AT = 'AddTime';
public function creatuser(){
$this->username = Request::get('username');
$this->password =Request::get('password');
$this->save();
}
}
如何關閉?直接等於 null就行了
const UPDATED_AT = null;
const CREATED_AT = null;
也可以在類裏面直接更改一個變量
public $timestamps = FALSE;
如果希望自動填充 update_at 但是又希望填充的是個時間戳
protected $dateFormat = 'U';
所以,laravel給我的感覺就是不夠靈活,很不爽