我已经使用laravel和post and get方法创建了一个资源控制器:
class MyController extends Controller{
//get method when page is visited
public function index()
{
$data=array(
'title'=>'Standard Stock',
'standards'=>DB::table('standards')
->join('ps_product_lang','ps_product_lang.id_product','=','standards.id_product')
->select('standards.*','ps_product_lang.name')
->get()
);
return view('pages.standards')->with($data);
}
//post method to update value
public function update(Request $request, $id)
{
$this->validate($request,[
'quantity'=>'required'
]);
$standard=Standard::find($id);
$standard->quantity=$request->input('quantity');
$standard->save();
return redirect('/standards')->with('success','Quantity Updated');
}
}
现在它可以正常工作,但是问题是我的ps_product_lang数据库中有2000个产品,我想将每个$standard->quantity
都设置为15。
我曾经通过控制器中的update()
函数来更新数量值。
但是现在我想将所有$standard->quantity
的初始值设置为15,我绝对不会单击2000时间表单按钮来提交发布请求。
我的问题是:是否有任何简便的方法将所有$standard->quantity
值设置为15?不接触其他代码?
答案 0 :(得分:2)
有几种选择。
1)SQL更新
您可以使用SQL查询更新数据库,并将所有行设置为数量= 15
UPDATE ps_product_lang SET quantity = 15
2)Laravel Jobs
您可以为此创建工作。
请参见文档此处:https://laravel.com/docs/5.6/queues#creating-jobs
3)迁移
您可以为此使用迁移,并为此列设置默认值。
Schema::table('ps_product_lang ', function (Blueprint $table) {
$table->string('quantity')->default('15')->change();
});
在文档上查看迁移详细信息:https://laravel.com/docs/5.6/migrations#modifying-columns
答案 1 :(得分:1)
是的。您可以。您必须在“数据库/迁移”文件夹中编辑create_table_file。
因此,只需将列的默认值设置为“ 15”即可。
例如:
Schema::create('platforms', function (Blueprint $table) {
$table->increments('platform_id');
$table->string('quantity')->default(15);
$table->string('price')->default('');
$table->timestamps();
});
完成后,您必须回滚表。
这将删除您的所有数据,因此请先备份表。
php artisan migrate:rollback
php artisan migrate