我正在尝试填充3个动态下拉菜单,以从目录中过滤图像。
我需要通过情感(在我的代码中为西班牙语中的情感)过滤它们,它们只有3个幸福,愤怒和悲伤(alegria,ira,tristeza),这些类别中的每个类别都可以具有3个强度级别,例如高,中和低(中音,中音,巴霍)。
因此,例如,当您选择anger+level of activation
(它必须仅按照该顺序,意味着情感应该始终优先)时,它应该用这些规格的图像填充第三个drop-down
。
我数据库中的我的表Emocion
仅具有2列id
和emocion
,并记录了3种情绪。
我尝试在Schema::defaultStringLength(191);
上添加此行app/Providers/AppServiceProvider.php
,但无法正常工作,我尝试了在config\database.php
->"mysql"
array中将'strict' => false
设置为全部禁用。
目前,我只是试图填充数据库中的第一个下拉列表。
这是我的控制器的代码:
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\User;
use DB;
class PlantillaImagenesController extends Controller{
public function index()
{
$emocion_list = DB:: table('Emocion')
->groupBy('Emocion')
->get();
return view ('admin.Imagen.index')->with('users', User::all())->with('emocion_list', $emocion_list);
}
}
这是我的前两个下拉菜单:
<div class="input-group mb-3">
<div class="input-group-prepend">
<label class="input-group-text" for="inputGroupSelect01">Emocion</label>
</div>
<select name="emocion"class="custom-select input-lg dynamic" id="emocion" data-dependent = "intensidad">
<option value="">Selecciona Emocion</option>
@foreach ($emocion_list as $emocion )
<option value="{{ $emocion->emocion }}">{{$emocion->emocion }}</option>
@endforeach
</select>
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<label class="input-group-text" for="inputGroupSelect01">Intensidad</label>
</div>
<select name="intensidad" class="custom-select" id="intensidad" data-dependent = "imagen">
</select>
</div>
和我的路线文件:
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Route::namespace('Admin')->prefix('admin')->middleware(['auth', 'auth.admin'])->name('admin.')->group(function(){
Route::resource('/ImagenAudioVideo', 'PlantillaController', ['except' => ['show', 'create', 'store'] ]);
Route::get('/Imagen', 'PlantillaImagenesController@index'); // <-------------------------->this one
Route::resource('/Audio', 'PlantillaAudiosController', ['except' => ['show', 'create', 'store'] ]);
Route::resource('/Video', 'PlantillaVideosController', ['except' => ['show', 'create', 'store'] ]);
Route::resource('/ImagenAudio', 'PlantillaImagenesAudioController', ['except' => ['show', 'create', 'store'] ]);
Route::resource('/EditarUsuario', 'EditarUsuariosController', ['except' => ['show', 'create', 'store'] ]);
Route::get('/', function () {
return view('home');
});
});
收到此错误:
SQLSTATE [42000]:语法错误或访问冲突:1055 SELECT列表的表达式#1不在GROUP BY子句中,并且包含未聚合的列'configiem.Emocion.IdEmocion',该列在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by不兼容(SQL:从
Emocion
组中按*Emocion
选择*)
您的错误在此代码上
$emocion_list = DB:: table('Emocion')
->groupBy('Emocion')
->get();
您必须在select()
上其他未在groupBy()
或聚合函数中使用的列上进行污染。
写这个,我认为它将起作用
$emocion_list = DB:: table('Emocion')
->select('emocion')
->groupBy('emocion')
->get();
使用
$emocion_list = DB::table('Emocion')
->select('emocion')
->groupBy('emocion')
->get();
如果使用的是雄辩的ORM,则>
$emocion_list = Emicon::select('emocion')
->groupBy('emocion')
->get();