这是我在路由文件中编写的代码
`Route::get('/{username}/ajax-lead', function(){ $brand_id = Input::get('brand_id'); $table_data = DB::table('users')->where('brand_id',$brand_id)->get(); $table_name = $table_data[0]->table_name; $table_lastRecords = DB::table($table_name)->get(); $columns = Schema::getColumnListing($table_name); $table_lastRecords = DB::table($table_name)->get(); return Response::json($table_lastRecords); });` here is my view file `{{Form::open(array('url'=>'','files'=>true))}} client list * Select Clients @foreach($brand as $userLeads){ brand_id }}">{{ $userLeads->name }} } @endforeach {{Form::close()}} $('#brand_name').on('change',function(e){ // body... console.log(e); var brand_id = e.target.value; //ajax Call $.get('/{username}/ajax-lead?brand_id=' + brand_id,function(data){ //success data console.log(data); }); }); `
我想获得table_name列值作为响应。我使用json进行响应。
答案 0 :(得分:0)
答案:最简单的解决方案是返回一个数据数组,其中第一个值是table_name,第二个值是lastRecords的集合。看起来像这样:
$responseArray[0] = $table_name;
$responseArray[1] = $table_lastRecords;
return json_encode($responseArray);
然后,在您看来,您将解析Json响应,并让table_name = responseData [0]和lastRecords = responseData [1]。当然,您也可以使用非数字索引使代码更具可读性,例如responseData ['table_name'],但这些语义取决于您。
其他信息:
话虽如此,但我认为应该指出您的代码中的几个问题。您应该对口才查询更加熟悉,因为正确使用它们会大大简化您的代码。例如,这两行:
$table_data = DB::table('users')->where('brand_id',$brand_id)->get();
$table_name = $table_data[0]->table_name;
可以重写为:
$table_name = User::where('brand_id',$brand_id)->first()->table_name;
但这让我问一个问题,每个品牌只有一张桌子吗?如果是这样,您为什么要与用户一起存储此信息,而不是在“品牌”表中?最有意义的方式是拥有一个具有table_name列的Brands模型,然后使用以下简单查询即可获得表名:
$table_name = Brand::find($brand_id)->table_name;
此外,您应该避免在路由文件中进行此类工作。与路由用户无关的所有内容都应在控制器或模型中处理。然后,在控制器中,您应该通过导入App \ User和App \ Brand在查询中利用用户或品牌模型。