这是我的结构,我想在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();
});
}
答案 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。