在laravel中动态填充下拉列表的有效方法

我有多个数据库表,每个表都填充一个下拉列表,重点是每个下拉列表影响下一个下拉列表。

我的意思是,如果我从第一个下拉列表中选择一个项目,则所选项目的下一个下拉值会发生变化,这意味着它们是相关的,并且它们会在每个下拉项目更改时动态填充。

我知道这效率不高,需要重构,所以我很乐意指出填充这些下拉列表的正确方法。


炎炎设计
浏览 142回答 1
1回答

qq_笑_17

以下是您应该注意的事项。首先,如果您验证了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();    }}这只是一个示例,您可以使用这种方式重构您的代码库。
打开App,查看更多内容
随时随地看视频慕课网APP