我有一个班级Chat
:
class Chat extends Model
{
protected $primaryKey = 'chat_id';
protected $guarded = [];
public function comment()
{
return $this->hasOne(Comments::class, 'comment_id', 'comment_id');
}
}
课程Comments
:
class Comments extends Model
{
protected $primaryKey = 'comment_id';
protected $guarded = [];
}
这里是Comments
表的迁移:
public function up()
{
Schema::create('comments', function (Blueprint $table) {
$table->increments('comment_id');
$table->integer('user_id')->unsigned()->index('comments_user_id');
$table->boolean('mark');
$table->string('nick_name', 15)->nullable();
$table->text('comment', 65535);
});
}
Chat
有一个名为comment_id
的列。
当我使用Comments
基本方式创建Eloquent
时,一切正常,Comments.comment_id
从1开始,下一个Comments.comment_id
列会增加:
$comment = Comments::create([
'user_id' => 1,
'mark' => 50,
'comment' => 'Lorem ipsum dolor es at'
]); // $comment->comment_id = 1
但每当我通过Chat
关系创建时,Comments.comment_id
总是等于0:
$comment = $chat->comment()->create([
'user_id' => 1,
'mark' => 50,
'comment' => 'Lorem ipsum dolor es at',
]); // $comment->comment_id = 0
我说总是,因为在关系中创建两个Comments
会在Comments.comment_id
字段上抛出一个UNIQUE约束异常。
我的配置是否有错误? 顺便说一句,我使用SQLite(这在测试时发生),如果有任何兴趣的话。
答案 0 :(得分:1)
聊天关系应该是belongsTo关系,而不是hasOne。