首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我使用的是laravel 5.8,无法向mysql数据库插入数据

我使用的是laravel 5.8,无法向mysql数据库插入数据
EN

Stack Overflow用户
提问于 2019-05-20 17:50:19
回答 3查看 2.1K关注 0票数 1

我正在使用laravel 5.8并学习CRUD。我有2个表,用户表和地址表。我想将user_id连接到

地址表。但是我的代码不能工作。我无法插入数据。

我已经迁移了2个表,并且我能够添加列。我插入了一个用户的数据。所以表中只有一个用户信息。

我在本地服务器上使用MAMP和mysql服务器。

1.App/Address.php

代码语言:javascript
复制
protected $fillable = [
     'name'
];//

2.App/User.php

代码语言:javascript
复制
public function address(){
    return $this->hasOne('App\Address', 'foreign_key');
}

3.Userstable

代码语言:javascript
复制
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.地址表

代码语言:javascript
复制
Schema::create('addresses', function (Blueprint $table) {
        $table->Increments('id');
        $table->integer('user_id')->unsigned()->nullable();
        $table->string('name');
        //$table->timestamps();
    });

5.web.php/web.php

代码语言:javascript
复制
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);
});

日志文件上什么也没有显示,所以我不知道为什么它不能工作。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-20 18:15:46

在这里,我将一步一步地添加用于将数据插入数据库的代码

创建创建post表的迁移

代码语言:javascript
复制
php artisan make:migration create_post_table --create=post

在迁移中添加标题和内容列

代码语言:javascript
复制
public function up()
    {
        Schema::create('post', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('title');
            $table->longText('content');
            $table->timestamps();
        });
    }

在post文件夹的视图目录中创建post文件夹创建刀片文件create.blade.php

代码语言:javascript
复制
<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>

创建控制器

代码语言:javascript
复制
php artisan make:controller PostController --resource

控制器中的代码

代码语言:javascript
复制
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)中

代码语言:javascript
复制
//routes for post
Route::resource('post', 'PostController');

打开post表单

代码语言:javascript
复制
http://example.test/post/create 

输入标题和内容,然后单击保存按钮

票数 3
EN

Stack Overflow用户

发布于 2019-05-20 18:07:00

在您的Addresses表中,

代码语言:javascript
复制
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

代码语言:javascript
复制
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();
});
票数 1
EN

Stack Overflow用户

发布于 2019-05-20 18:07:30

用户模型中的关系无效。您应该纠正这一点,以便与关系一起工作。

2.App/User.php

代码语言:javascript
复制
public function address(){
    return $this->hasOne('App\Address', 'user_id','id');
}

另一种将你的地址分配给用户的方法(另一种方法,只是一个提示):

代码语言:javascript
复制
$address = new Addresses(['name'=>'1234 Houston av NY NY 234', 'user_id',$user->id]);
$adresss->save();

我认为您还应该将关系添加到数据库迁移中。在你的代码中你没有这样做。

4.地址表

代码语言:javascript
复制
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.
    });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56218365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档