如何连接用户'表' post'在laravel的桌子?

时间:2017-05-15 16:46:26

标签: database laravel database-connection laravel-facade

这是我的结构,我想在laravel中连接这两个表,怎么做?

邮政表:

public function up()
{
    Schema::create('post', function (Blueprint $table) {
        $table->increments('post_id');
        $table->string('post');
        $table->integer('time');
        $table->string('host');
        $table->integer('vote_up');
        $table->integer('vote_down');
        $table->foreign('id_fk')->references('id')->on('users');
        $table->timestamps();
    });
}

用户表:

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->date('dob');
        $table->string('email')->unique();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });
}

2 个答案:

答案 0 :(得分:0)

在你的帖子表中你应该有:

$table->integer('user_id')->unsigned();
用户模型上的

public function posts(){
return $this->hasMany(Post::class);
}

在你的Post模型上:

public function user(){
return $this->belongsTo(User::class);
}

答案 1 :(得分:0)

我认为您只是粘贴迁移,但您需要在users表之前创建<{1}}表 表。我会改变

posts

$table->foreign('id_fk')->references('id')->on('users');

因为Laravel可以推断出外键:

  

Eloquent通过检查名称来确定默认外键名称   关系方法和后缀方法名称与_id。   但是,如果Post模型上的外键不是user_id,那么   可以将自定义键名作为第二个参数传递给belongsTo   方法

然后您在模型中需要的只是以下内容:

$table->foreign('user_id')->references('id')->on('users');

class Post extends Model
{
    /**
     * Get the user that owns the post.
     */
    public function user()
    {
        return $this->belongsTo('App\User');
        // if you want to keep your current structure:
        // return $this->belongsTo('App\User', 'id_fk', 'id);
    }
}

您可以阅读有关设置关系的更多信息here