laravel eloquent 使用 ID 数组更新 hasmany
laravel eloquent update hasmany with array of ids
我需要更新 HasMany
与一组 ID 的关系。
常见问题模型。
class Faq extends Model
{
public function products(){
return $this->belongsToMany(Product::class, 'faq_products');
}
}
我有 Product
模型和枢轴 table 'faq_products' HasMany
关系。
faq_products table
Schema::create('faq_products', function (Blueprint $table) {
$table->bigIncrements('id');
$table->bigInteger('faq_id')->unsigned()->nullable();
$table->foreign('faq_id')->references('id')->on('faqs')->onDelete('cascade');
$table->integer('product_id')->unsigned()->nullable();
$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
$table->timestamps();
});
我从与常见问题解答相关的请求中获取了一组产品 ID,但不确定如何更新关系。
数组
$product_ids = [4, 3, 2];
我敢打赌,attach()
您要找的是:
class FaqController extends Controller
{
public function update(Request $request)
{
$faq = Faq::findOrFail($request->input('faq_id');
//attached products [4,5,6]
$faq->products()->attach($request->input('product_ids')); // [4, 3, 2];
//attached products [2,3,4,5,6]
}
}
如果您之前附加了其他产品(例如 id = 4、5 和 6)并且想要在附加 4、3 和 2 时删除它们;使用 sync()
而不是附加
//attached products [4,5,6]
$faq->products()->sync($request->input('product_ids')); // product_ids = [4,3,2]
//attached products [4,3,2]
我需要更新 HasMany
与一组 ID 的关系。
常见问题模型。
class Faq extends Model
{
public function products(){
return $this->belongsToMany(Product::class, 'faq_products');
}
}
我有 Product
模型和枢轴 table 'faq_products' HasMany
关系。
faq_products table
Schema::create('faq_products', function (Blueprint $table) {
$table->bigIncrements('id');
$table->bigInteger('faq_id')->unsigned()->nullable();
$table->foreign('faq_id')->references('id')->on('faqs')->onDelete('cascade');
$table->integer('product_id')->unsigned()->nullable();
$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
$table->timestamps();
});
我从与常见问题解答相关的请求中获取了一组产品 ID,但不确定如何更新关系。
数组
$product_ids = [4, 3, 2];
我敢打赌,attach()
您要找的是:
class FaqController extends Controller
{
public function update(Request $request)
{
$faq = Faq::findOrFail($request->input('faq_id');
//attached products [4,5,6]
$faq->products()->attach($request->input('product_ids')); // [4, 3, 2];
//attached products [2,3,4,5,6]
}
}
如果您之前附加了其他产品(例如 id = 4、5 和 6)并且想要在附加 4、3 和 2 时删除它们;使用 sync()
而不是附加
//attached products [4,5,6]
$faq->products()->sync($request->input('product_ids')); // product_ids = [4,3,2]
//attached products [4,3,2]