我有一个模型User
的表格和模型Feature
的另一个表格。
我希望用户对功能进行投票,因此我为它创建了一个表:
public function up()
{
Schema::create('votes', function(Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->integer('feature_id')->unsigned();
$table->foreign('feature_id')->references('id')->on('features')->onDelete('cascade');
$table->timestamps();
});
}
我在Feature
模型上定义关系:
public function votes()
{
return $this->belongsToMany('App\User', 'votes');
}
在控制器中,我尝试对登录的用户执行投票。
public function vote(Feature $feature) {
$feature->votes()->save(Auth::user());
}
但是当我执行此操作时,我收到以下消息:
SQLSTATE [23000]:完整性约束违规:19 NOT NULL约束失败:votes.created_at(SQL:插入"投票"(" feature_id"," user_id&# 34;)值(1,1))
如果我看到该消息,似乎created_at
字段似乎没有被填充,但这些字段通常由Laravel自动处理。
我弄乱了什么?
答案 0 :(得分:3)
如果要在数据透视表上使用时间戳,则必须在模型方法上声明时间戳。
public function votes()
{
return $this->belongsToMany('App\User', 'votes')->withTimestamps();
}