Laravel如何用post方法插入数据?
Laravel how to insert data with post method?
几天来,我一直在尝试使用 post 方法从我的 Angular 组件传输数据。经过长时间的研究和阅读许多文档,我仍然无法解决我的问题,希望你能帮助我。
我想做的是使用 post 方法来分配 user_id
和 track_id
字段。我想在购买后将用户和他的 ID 添加到相应的曲目 ID,但不幸的是我无法让它工作。你有什么办法可以解决这个问题吗?
我创建了一个名为 create_trackusers 的迁移:
Schema::create('trackusers', function (Blueprint $table) {
$table->increments('id');
$table->unsignedBigInteger('user_id');
$table->unsignedBigInteger('track_id');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->foreign('track_id')->references('trackId')->on('tracklists')->onDelete('cascade');
});
这里我创建了一个多对多的关系。
然后我创建了我的控制器:
public function addTrackusers(Request $request, $id)
{
$trackusers = User::find($id);
$trackusers = trackusers::create([
'user_id' => $request->name,
'track_id' => $request->email
]);
$trackusers->safe();
return $trackusers;
}
我的 api.php 路线是这样的:
// Insert Data to trackusers
Route::post('addTrackusers/{id}', 'App\Http\Controllers\trackusersController@addTrackusers');
这里我想把user_id
分配给他购买的track_id
。
这就是 table 在成功进入后应该如何看待。
以下是模型的更多详细信息:
trackusers.php:
protected $fillable = [
'user_id',
'track_id'
];
tracklists.php:(曲目所在的位置)
class tracklists extends Model
{
use HasFactory;
}
User.php:
protected $fillable = [
'name',
'email',
'password',
'tracks'
];
非常感谢!
根据我的理解.. 您可以使用 pivot 轻松地将用户映射到曲目列表。我们可以在这里使用一些很好的关系函数,它们是 attach() 和 detach()。因此,例如,如果我要将新用户添加到曲目列表,您需要创建的关系在我们的曲目列表和用户模型之间称为多对多。
class tracklists extends Model
{
/**
* The tracklists that belong to many user.
*/
public function users(){
return $this->belongsToMany('App\User');
}
}
对于我们的用户模型:
class User extends Model
{
/**
* The uses that belong to many tracklists.
*/
public function tracklists()
{
return $this->belongsToMany('App\tracklists');
}
}
附加和分离,
那么我们如何实际存储我们的 trackusers table 的记录?
public function addTrackusers(Request $request, $id)
{
$user = User::find($id);
$user->tracklists()->attach($request->track_id); // add track
return $user->tracklists();
}
添加多条轨道
public function addTrackusers(Request $request, $id)
{
$user = User::find($id);
$user->tracklists()->attach([1,3,7]); // add multiple tracks via an
array of track IDs
return $user->tracklists();
}
如果你想从一个 pivot table 中删除一个或多个曲目列表,你可以使用 detatch 方法:
public function removeTrackusers(Request $request, $id)
{
$user = User::find($id);
$user->tracklists()->attach($request->track_id); // remove track
$user->tracklists()->detach([1,3,7]); // remove multiple tracks via an
array of track IDs
return $user->tracklists();
}
结论
就是这样了。现在您知道如何将 pivot tables 与 Laravel 和 Eloquent 一起使用,这是一个方便的工具。
谢谢,希望这对你有帮助
几天来,我一直在尝试使用 post 方法从我的 Angular 组件传输数据。经过长时间的研究和阅读许多文档,我仍然无法解决我的问题,希望你能帮助我。
我想做的是使用 post 方法来分配 user_id
和 track_id
字段。我想在购买后将用户和他的 ID 添加到相应的曲目 ID,但不幸的是我无法让它工作。你有什么办法可以解决这个问题吗?
我创建了一个名为 create_trackusers 的迁移:
Schema::create('trackusers', function (Blueprint $table) {
$table->increments('id');
$table->unsignedBigInteger('user_id');
$table->unsignedBigInteger('track_id');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->foreign('track_id')->references('trackId')->on('tracklists')->onDelete('cascade');
});
这里我创建了一个多对多的关系。 然后我创建了我的控制器:
public function addTrackusers(Request $request, $id)
{
$trackusers = User::find($id);
$trackusers = trackusers::create([
'user_id' => $request->name,
'track_id' => $request->email
]);
$trackusers->safe();
return $trackusers;
}
我的 api.php 路线是这样的:
// Insert Data to trackusers
Route::post('addTrackusers/{id}', 'App\Http\Controllers\trackusersController@addTrackusers');
这里我想把user_id
分配给他购买的track_id
。
这就是 table 在成功进入后应该如何看待。
以下是模型的更多详细信息: trackusers.php:
protected $fillable = [
'user_id',
'track_id'
];
tracklists.php:(曲目所在的位置)
class tracklists extends Model
{
use HasFactory;
}
User.php:
protected $fillable = [
'name',
'email',
'password',
'tracks'
];
非常感谢!
根据我的理解.. 您可以使用 pivot 轻松地将用户映射到曲目列表。我们可以在这里使用一些很好的关系函数,它们是 attach() 和 detach()。因此,例如,如果我要将新用户添加到曲目列表,您需要创建的关系在我们的曲目列表和用户模型之间称为多对多。
class tracklists extends Model
{
/**
* The tracklists that belong to many user.
*/
public function users(){
return $this->belongsToMany('App\User');
}
}
对于我们的用户模型:
class User extends Model
{
/**
* The uses that belong to many tracklists.
*/
public function tracklists()
{
return $this->belongsToMany('App\tracklists');
}
}
附加和分离, 那么我们如何实际存储我们的 trackusers table 的记录?
public function addTrackusers(Request $request, $id)
{
$user = User::find($id);
$user->tracklists()->attach($request->track_id); // add track
return $user->tracklists();
}
添加多条轨道
public function addTrackusers(Request $request, $id)
{
$user = User::find($id);
$user->tracklists()->attach([1,3,7]); // add multiple tracks via an
array of track IDs
return $user->tracklists();
}
如果你想从一个 pivot table 中删除一个或多个曲目列表,你可以使用 detatch 方法:
public function removeTrackusers(Request $request, $id)
{
$user = User::find($id);
$user->tracklists()->attach($request->track_id); // remove track
$user->tracklists()->detach([1,3,7]); // remove multiple tracks via an
array of track IDs
return $user->tracklists();
}
结论 就是这样了。现在您知道如何将 pivot tables 与 Laravel 和 Eloquent 一起使用,这是一个方便的工具。
谢谢,希望这对你有帮助