1 回答
TA贡献1818条经验 获得超7个赞
以下是您应该注意的事项。首先,如果您验证了Province_id,则无需在您的代码中仔细检查它。所以你应该删除 Province::whereId($request->province_id)->exists()
第二个是,Laravel 有 ->when eloquent 方法,可以帮助您减少对空值的 if else 语句,如果给定参数的值是空值,则不会影响查询。 https://laravel.com/docs/5.8/queries#conditional-clauses
第三个,我建议你使用 Laravel Resources 来转换你从数据库中获取的数据在 API 中。 https://laravel.com/docs/5.8/eloquent-resources
这是一小部分代码的更好版本,我认为通过建议的提示和此代码,您可以重构它:
class TestController extends Controller
{
const DEFAULT_COUNTRY_ID = '10';
public $request;
public function something(Request $request)
{
// Put Validations ...
$this->request = $request;
OutDoorMedia::when('province_id', function ($query) {
return $query->where('province_id', $this->request->province_id);
})
->when('country_id', function ($query) {
// if country_id exists
return $query->where('country_id', $this->request->country_id);
}, function ($query) {
// else of above if (country_id is null ...)
return $query->where('country_id', self::DEFAULT_COUNTRY_ID);
})
->get();
}
}
这只是一个示例,您可以使用这种方式重构您的代码库。
- 1 回答
- 0 关注
- 141 浏览
添加回答
举报