[英]Laravel | How to use Pivot table with Relationship
我有一个关于关系的问题。 我有一个活动 model 和 controller。 我想我搜索了很多,我找到了一个附加的方法。 但是我知道如何使用它。
我有一个这样的活动表:
Schema::create('activities', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('title');
$table->string('company_name');
$table->string('price');
$table->string('description');
$table->timestamps();
});
另一个表是activity_asset,如下所示:
Schema::create('activity_asset', function (Blueprint $table) {
$table->foreignId('activity_id')->constrained();
$table->string('image')->nullable();
$table->string('video')->nullable();
$table->timestamps();
});
现在我不知道如何关联这两个表。 我想做什么? •
我有一个表格刀片。 输入标题、公司名称、价格、描述、视频输入、文件输入。 ( http://prntscr.com/10nyfd1 )
当我创建一个新活动(标题、公司名称、价格、描述)时,我想添加到视频和图像 URL 以添加带有活动 ID 的活动资产表。
简短摘要:当我创建一个新活动时,如何将其他字段添加到带有 activity_id 的 activity_asset 表中。
非常感谢。
尝试这个
首先,创建一个活动。
$activity = new Activity;
$activity->title = $request->title;
$activity->company_name = $request->company_name;
$activity->price = $request->price;
$activity->description = $request->description;
$activity->save();
foreach ($request->image as $key => $value) {
$image[] = array(
'activity_id' => $activity->id,
'image' => $value,
);
}
ActivityAsset::insert($image);
foreach ($request->video as $key => $value) {
$video[] = array(
'activity_id' => $activity->id,
'video' => $value,
);
}
ActivityAsset::insert($video);
Pivot 表用于多对多关系。 但是对于您的情况,您具有一对多的关系。 并且不需要 pivot 表。
多对多关系的典型示例是文章和标签。 其中 1 篇文章可以有多个标签,1 个标签可以属于多个文章。
但是您的示例是一对多的关系。 其中 1 个活动可以有多个 activity_asset,而 1 个 activity_asset 可以有一个活动。 在这种情况下,您不需要 pivot 表。
也许这可以帮助你
public function method()
{
$activity = Activity::find(1);
$asset = $activity->assets()->create([
'image' => 'url',
'video' => 'url',
]);
}
在您的活动 model 中:
public function assets()
{
return $this->hasMany('activity_asset', 'activity_id');
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.