我正在開發一個 Laravel 專案,該專案應該是模塊化的。
我寫了一個搜索查詢,我想要的是:
模型:
評估 A
評估 B
評估 C
看法:
{{ Form::open(array('route' => 'search')) }}
<select multiple name="search_by_form[]">
<option selected>Any</option>
<option value="assessment_a">A</option>
<option value="assessment_b">B</option>
<option value="assessment_c">C</option>
</select>
{{ Form::close() }}
控制器:
控制器要復雜得多,但我讓您更容易理解我的需求。
現在如下所示:
$user_entry =$request->input('search_by_form', []);
$resultArray = [];
foreach ($user_entry as $entry){
if ($entry == "assessment_a"){
$model_results = AssessmentA::where("approved",1)->get();
} elseif ($entry == "assessment_b"){
$model_results = AssessmentB::where("approved",1)->get();
} elseif($entry == "assessment_c"){
$model_results = AssessmentC::where("approved",1)->get();
}
}
我想要的是:
SearchViewController:通過特定檔案夾中的模型進行 foreach
然后:
{{ Form::open(array('route' => 'search')) }}
<select multiple name="search_by_form[]">
<option selected>Any</option>
@foreach($models as $model)
<option value="{{ $model }}">{{ $model->name }}</option>
@endforeach
</select>
{{ Form::close() }}
與其采用這種丑陋的方法,不如采用更多類似這樣的方法:
foreach ($user_entry as $entry){
$entry::where("approved",1)->get(); #Obviously the values on the view would be change to "AssessmentA", etc.
}
我這個可行嗎?
預先感謝!
uj5u.com熱心網友回復:
我想你會創建這樣的任何陣列:
$model_array = ['assessment_a' => AssessmentA::class];
然后在回圈中簡單地傳遞值
foreach ($user_entry as $entry){
$model_array[$entry]::where("approved",1)->get(); #Obviously the values on the view would be change to "AssessmentA", etc.
}
uj5u.com熱心網友回復:
如果將選擇值更改為實際的表名,則可以輕松完成
{{ Form::open(array('route' => 'search')) }}
<select multiple name="search_by_form[]">
<option selected>Any</option>
<option value="assessments_a">A</option>
<option value="assessments_b">B</option>
<option value="assessments_c">C</option>
</select>
{{ Form::close() }}
$user_entry = $request->input('search_by_form', []);
if (empty($user_entry)) {
model_results = collect();
} else {
$query = DB::table(array_shift($user_entry))->where('approved', 1);
foreach ($user_entry as $table) {
$query->union(fn($union) => $union->from($table)->where('approved', 1));
}
$model_results = $query->get();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/404880.html
標籤:
