我有两张桌子 - 通过外键(product_id
)连接的广告系列和产品
广告活动
|id| |product_id| |slug|
产品
|id| |product_name|
如何从Products表中生成slug
列中的slugs。
例如,product_name = "Pro Evolution Soccer 2017"
的产品有id = 1
。如何在广告系列表格中生成广告Pro-evolution-soccer-2017-1
?可能我应该使用Laravel辅助函数str_slug($title, $separator);
,但我不知道如何......
顺便说一句,我有超过50万种产品需要生成slu ... ...
答案 0 :(得分:1)
您应该在创建和更新的Products表中保存它。如果您这样做一次,在单独的表中,如果/当Products.product_name发生更改时,它将导致问题。
TypeError: can't convert expression to float
要更新现有项目,您可以创建迁移以将$product->slug = str_slug($product->product_name, '-');
字段添加到Product,然后选择所有产品,遍历它们,并像上面一样设置slug值。
slug
然后从命令行中查看<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
use App\Models\Product;
class CreateFlightsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('Products', function (Blueprint $table) {
$table->string('slug');
});
foreach (Product::all() as $product) {
$product->slug = str_slug($product->product_name, '-');
$product->save();
}
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('Products', function (Blueprint $table) {
$table->dropColumn('slug');
});
}
}
。
答案 1 :(得分:0)