SQLSTATE[23000]: Integrity constraint violation: 19 NOT NULL constraint failed: articles.user_id (SQL: insert into "articles" ("article", "updated_at", "created_at") values (test, 2020-12-31 05:11:42, 2020-12-31 05:11:42))
今Laravelでwebアプリを作成しているのですが、リレーションを利用して
userテーブルとarticleテーブルを連携させようと思っているのですが上記エラーが出てしまいます。
user_idの所で怒られています。文字通りidがIntegrityではないからかなとは思い
user側のidをbigInterityなどに変えるなどしたのですが、ダメでした、、
流れとしては
1.ユーザーログインする
2.記事作成というページ遷移ボタンを押しページに移動する。
3.textareaに任意の文章を書きこむ。
4.投稿ボタンを押下する。←ここでエラーが発生。
5.各ユーザーテーブルに個々の投稿した文章が表示されるようにする。
これでhasManyを利用してarticleと結びつける。
User.php
public function articles(){
/**
*一対多の一側
* リレーション一対多の関係
* user(1):article(多)
* articleテーブルを新しい順で更新する。
*
*
*/
return $this->hasMany('App\Models\Article')->latest();
}
Article.php
/**
* 一対多の処理多側、articleの処理。
*
* */
public function user(){
return $this->belongsTo('App\models\User');
}
以下userとarticleのテーブル
create_users_table.php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();//←これがarticle側でいうuser_id
//$table->bigInteger('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
article_table.php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateArticlesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('articles', function (Blueprint $table) {
$table->id();
$table->string('article');
$table->string('article_title');
$table->timestamps();
/**
* 以下articleテーブルから親テーブルの外部キーに接続する。
*
* ->default(1);←こいつがある限りidがiのユーザーしか反映されない。
*
*/
$table->integer('user_id')->unsigned();
$table->foreign('user_id') //外部キー制約
->references('id')//userのidカラムを参照する?
->on('users')//usersテーブルのidを参照する
->onDelete('cascade');//ユーザーが削除されたら紐付くpostsも削除
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('articles');
}
}
ユーザー側のidをなにかしらIntegerの型にしなければならないのでしょうか、、
0