我正在使用 laravel 5.8,但无法将数据插入 mysql 数据库
I am using laravel 5.8, and I cannot insert data to mysql database
我正在使用 laravel 5.8 并学习 CRUD。我有 2 个 table,用户 table 和地址 table。我想将 user_id 连接到
地址 table。但是我的代码不起作用。我无法插入数据。
我已经迁移了 2 table,并且我可以添加列。
我插入了一个用户的数据。所以table有一个用户的信息。
我在本地服务器中使用 MAMP 和 mysql 服务器。
1.App/Address.php
protected $fillable = [
'name'
];//
2.App/User.php
public function address(){
return $this->hasOne('App\Address', 'foreign_key');
}
3.Userstable
Schema::create('users', function (Blueprint $table) {
$table->Increments('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
4.Addresses table
Schema::create('addresses', function (Blueprint $table) {
$table->Increments('id');
$table->integer('user_id')->unsigned()->nullable();
$table->string('name');
//$table->timestamps();
});
5.routes/web.php
use App\User;
use App\Address;
Route::get('/', function () {
return view('welcome');
});
Route::get('/insert', function(){
$user = User::findOrFail(1);
$address = new Addresses(['name'=>'1234 Houston av NY NY 234']);
$user->address()->save($address);
});
日志文件中没有显示任何内容,所以我不明白为什么它不起作用。
在你的Addresses
table,
Schema::create('addresses', function (Blueprint $table) {
$table->Increments('id');
$table->integer('user_id')->unsigned()->nullable();
$table->string('name');
//$table->timestamps();
// define foreign key like this
$table->foreign('user_id')
->references('id')->on('users')
->onDelete('cascade');
});
更新您的 routes/web.php
如下所示,
Route::get('/insert', function(){
$user = User::findOrFail(1);
$address = new Addresses();
$address->name = '1234 Houston av NY NY 234';
$address->user_id = $user->id;
$address->save();
});
您的用户模型中的关系无效。您应该更正此问题以使用该关系。
2.App/User.php
public function address(){
return $this->hasOne('App\Address', 'user_id','id');
}
将您的地址分配给用户的另一种方法(替代方法,只是一个提示):
$address = new Addresses(['name'=>'1234 Houston av NY NY 234', 'user_id',$user->id]);
$adresss->save();
我认为您还应该将关系添加到您的数据库迁移中。在你的代码中你没有。
4.Addresses table
Schema::create('addresses', function (Blueprint $table) {
$table->Increments('id');
$table->integer('user_id')->unsigned()->nullable();
$table->string('name');
$table->foreign('user_id')->references('id')->on('user'); // this line is the forgein key.
});
这里我添加了一步步向数据库插入数据的代码
创建迁移以创建 post table
php artisan make:migration create_post_table --create=post
在迁移中添加标题和内容栏
public function up()
{
Schema::create('post', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('title');
$table->longText('content');
$table->timestamps();
});
}
在视图目录下创建post文件夹
在 post 文件夹中创建 blade 文件 create.blade.php
<form method="POST" action="{{ route('post.store') }}">
@csrf
Title: <input type="text" name="title" placeholder="Title" required>
<br>
Content: <textarea name="content" placeholder="Content" required></textarea>
<button type="submit">Save</button>
</form>
创建控制器
php artisan make:controller PostController --resource
控制器中的代码
use App\Post;
public function create()
{
return view('post.create');
}
public function store(Request $request)
{
$request->validate([
'title' => 'required',
'content' => 'required',
]);
$post = $request->all();
Post::create($post);
return redirect('/post');
}
在路由文件中 (web.php)
//routes for post
Route::resource('post', 'PostController');
打开post表格
http://example.test/post/create
输入标题和内容并点击保存按钮
我正在使用 laravel 5.8 并学习 CRUD。我有 2 个 table,用户 table 和地址 table。我想将 user_id 连接到
地址 table。但是我的代码不起作用。我无法插入数据。
我已经迁移了 2 table,并且我可以添加列。 我插入了一个用户的数据。所以table有一个用户的信息。
我在本地服务器中使用 MAMP 和 mysql 服务器。
1.App/Address.php
protected $fillable = [
'name'
];//
2.App/User.php
public function address(){
return $this->hasOne('App\Address', 'foreign_key');
}
3.Userstable
Schema::create('users', function (Blueprint $table) {
$table->Increments('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
4.Addresses table
Schema::create('addresses', function (Blueprint $table) {
$table->Increments('id');
$table->integer('user_id')->unsigned()->nullable();
$table->string('name');
//$table->timestamps();
});
5.routes/web.php
use App\User;
use App\Address;
Route::get('/', function () {
return view('welcome');
});
Route::get('/insert', function(){
$user = User::findOrFail(1);
$address = new Addresses(['name'=>'1234 Houston av NY NY 234']);
$user->address()->save($address);
});
日志文件中没有显示任何内容,所以我不明白为什么它不起作用。
在你的Addresses
table,
Schema::create('addresses', function (Blueprint $table) {
$table->Increments('id');
$table->integer('user_id')->unsigned()->nullable();
$table->string('name');
//$table->timestamps();
// define foreign key like this
$table->foreign('user_id')
->references('id')->on('users')
->onDelete('cascade');
});
更新您的 routes/web.php
如下所示,
Route::get('/insert', function(){
$user = User::findOrFail(1);
$address = new Addresses();
$address->name = '1234 Houston av NY NY 234';
$address->user_id = $user->id;
$address->save();
});
您的用户模型中的关系无效。您应该更正此问题以使用该关系。
2.App/User.php
public function address(){
return $this->hasOne('App\Address', 'user_id','id');
}
将您的地址分配给用户的另一种方法(替代方法,只是一个提示):
$address = new Addresses(['name'=>'1234 Houston av NY NY 234', 'user_id',$user->id]);
$adresss->save();
我认为您还应该将关系添加到您的数据库迁移中。在你的代码中你没有。
4.Addresses table
Schema::create('addresses', function (Blueprint $table) {
$table->Increments('id');
$table->integer('user_id')->unsigned()->nullable();
$table->string('name');
$table->foreign('user_id')->references('id')->on('user'); // this line is the forgein key.
});
这里我添加了一步步向数据库插入数据的代码
创建迁移以创建 post table
php artisan make:migration create_post_table --create=post
在迁移中添加标题和内容栏
public function up()
{
Schema::create('post', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('title');
$table->longText('content');
$table->timestamps();
});
}
在视图目录下创建post文件夹 在 post 文件夹中创建 blade 文件 create.blade.php
<form method="POST" action="{{ route('post.store') }}">
@csrf
Title: <input type="text" name="title" placeholder="Title" required>
<br>
Content: <textarea name="content" placeholder="Content" required></textarea>
<button type="submit">Save</button>
</form>
创建控制器
php artisan make:controller PostController --resource
控制器中的代码
use App\Post;
public function create()
{
return view('post.create');
}
public function store(Request $request)
{
$request->validate([
'title' => 'required',
'content' => 'required',
]);
$post = $request->all();
Post::create($post);
return redirect('/post');
}
在路由文件中 (web.php)
//routes for post
Route::resource('post', 'PostController');
打开post表格
http://example.test/post/create
输入标题和内容并点击保存按钮