我有一个正在创建的赞助应用程序,并试图使数据透视表在我的用户和孩子之间运行,但是当我有一个用户赞助孩子时,数据透视表kid_user
不会填充{ {1}}或kid_id
。不确定我缺少什么。
这是我的user_id
数据透视表:
kid_user
然后在用户模型上:用户可以有很多孩子...
public function up()
{
Schema::create('kid_user', function (Blueprint $table) {
$table->integer('kid_id')->unsigned()->index();
$table->foreign('kid_id')->references('id')->on('kids')->onDelete('cascade');
$table->integer('user_id')->unsigned()->index();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->primary(['kid_id', 'user_id']);
});
}
然后在Kid模型上:孩子可以有很多用户...
public function kid()
{
return $this->hasMany(Kid::class);
}
这是我正在使用的表格。(表格中仅包含相关信息)
public function user() {
//return $this->belongsTo(User::class); (Tried this..)
return $this->hasMany(User::class);
}
因此,当用户赞助孩子时。我希望将+---------------------+
| Tables_in_Database |
+---------------------+
| kid_user |
| kids |
| users |
+---------------------+
+-----------------------------+
| users table |
+----+------------+-----------+
| id | first_name | last_name |
+----+------------+-----------+
| 1 | John | Smith |
| 2 | Jane | Doe |
+----+------------+-----------+
+-----------------------------+
| kids table |
+----+------------+-----------+-------+
| id | first_name | last_name | slots |
+----+------------+-----------+-------+
| 1 | Bobby | Little | 3 | -> Can be sponsored 3 times
+----+------------+-----------+-------+
+--------------------+
| kid_user table | THE BELOW RESULTS ARE WHAT I'M LOOKING FOR.
+--------------------+
| *kid_id | *user_id | * = Primary Key
+---------+----------+
| 1 | 1 | -> Sponsored 1st Slot
+---------+----------+
| 1 | 2 | -> Sponsored 2nd Slot
+---------+----------+
| 1 | 1 | -> Sponsored 3rd Slot
+---------+----------+
和kid_id
输入到user_id
数据透视表中。任何帮助将不胜感激。
答案 0 :(得分:1)
首先,您可能想对模型中的函数进行重命名,因为它在关系中没有一个,但是有很多。
因此,在您的用户模型中添加以下内容:
public function kids()
{
return $this->belongsToMany(Kid::class);
}
在您的Kid模型中:
public function users()
{
return $this->belongsToMany(User::class);
}
然后要保存到数据透视表,因为您的表命名正确,只需执行以下操作:
$user->kids()->attach($kid);
将其正确保存在数据透视表中。首先确保您已有变量的User和Kid。更多详细信息here