Php Laravel 5.1:查询生成器不可读的参数或值
这是我的route.phpPhp Laravel 5.1:查询生成器不可读的参数或值,php,eloquent,laravel-5.1,query-builder,Php,Eloquent,Laravel 5.1,Query Builder,这是我的route.php Route::get('tempitems/{tempId}/add/{q?}', ['uses' => 'ItemTemplateController@addItems', 'as' => 'tempitems.add']); 这是addItems方法 public function addItems(Request $request, $tempId) { echo ($tempId) // 1 st echo $temp = DB::tab
Route::get('tempitems/{tempId}/add/{q?}',
['uses' => 'ItemTemplateController@addItems', 'as' => 'tempitems.add']);
这是addItems
方法
public function addItems(Request $request, $tempId)
{
echo ($tempId) // 1 st echo
$temp = DB::table('auto_items')
->join('items', 'auto_items.item_id', '=', 'items.id')
->select(
'items.name',
'auto_items.qty'
)
->where('auto_items.template_id', '=' , $tempId)
->tosql();
dd($temp);
echo $tempId; // 2nd echo
return view('template_items.add_items', [
'active' => $this->active,
'items' => $items,
'template' => $template,
'page' => $page,
'success' => $success,
'tempItems' => $tempItems
]);
}
当我访问localhost:8000/tempitems/1/add时,查询生成器无法读取$tempId
1st echo => return 1
dd return =>
"select `items`.`name`, `auto_items`.`qty` from `auto_items` inner join `items` on
`auto_items`.`item_id` = `items`.`id` where `auto_items`.`template_id` = ?"
2nd echo returned 1
我知道QueryBuilder使用get()返回行,因为它返回了零数组/[];这就是为什么我要使用toSql()
。但是,$tempId
不能被QueryBuilder读取
编辑:在编辑之前,我正在使用
->where('auto_items.template_id', '=' , 1)
上述代码仍返回“?”
->where('auto_items.template_id', '=' , $tempId)
这也是返回的“?”如果您想确保插入的变量是否已处理到查询中,最好使用DB::getQueryLog()
,它仍然在查询中显示?
,但在绑定中显示变量
->where('auto_items.template_id', '=' , $tempId)
DB::enableQueryLog();
$temp = DB::table('tabel')
->where('id', '=' , 1)
->get();
return json_encode(DB::getQueryLog());
样本结果:
[{"query":"select * from `age` where `id` = ?","bindings":[1],"time":0.19}]
我真的看不出问题所在,您在查询中没有使用$tempId
,并且$tempId
通过函数具有相同的值。那么,问题出在哪里?@Jerodev hi感谢您的回复,问题是查询生成器返回$tempId作为“?”,但是回音在前后都正常工作perfect@kotkoth-什么?只是一个占位符,因为Laravel使用准备好的语句。这并不意味着在您的查询中使用了此值。非常感谢!我知道这一定是某种错误,毕竟是我的代码错误。