S_R*_*S_R 2 php laravel laravel-5
我已经看到其他框架的类似问题,但我似乎无法找到 Laravel 的答案。
实现我的目标的最佳实践/最干净的解决方案是什么。
目前可以说我有一个名为Site
.
我的站点模型有一个名为的列prefix
,它只是由站点名称加上新站点 ID 生成的几个大写字母,例如,站点名称为“clare”的第 1 行变为“CLA1”,“pencet”变为“PEN2” .
我的问题是我需要新行id
来生成前缀,这意味着目前我必须保存它,然后像这样重新保存它。
$site = new Sites;
$site->name = 'clare';
$site->save();
//Now that we have saved, we can use the new id to create the prefix and save again
$site->prefix = strtoupper(substr($site, 0, 3)) . $site->id;
$site->save();
Run Code Online (Sandbox Code Playgroud)
我讨厌这样一个事实,因为我需要 ID,所以在最初保存它后我必须再次重新保存它,实现此目标的最佳方法是什么?是否可以在保存之前返回新模型 ID?
我知道我可以做一些事情,比如获取所有行的计数并以这种方式获取 ID,但我通常正在寻找最好、最干净的解决方案来实现这一目标。
试试这个解决方案:
站点模型:
public function getNextId()
{
$statement = DB::select("show table status like 'sites'");
return $statement[0]->Auto_increment;
}
Run Code Online (Sandbox Code Playgroud)
注意:不要忘记使用“use Illuminate\Support\Facades\DB”导入数据库;
在控制器中:
$site = new Sites;
$site->name = 'clare';
$site->prefix = strtoupper(substr($site->name, 0, 3)) . $site->getNextId();
$site->save();
Run Code Online (Sandbox Code Playgroud)