Php 拉威尔和一个While循环
我刚接触Laravel,目前我在控制器中有一段代码,没有Php 拉威尔和一个While循环,php,laravel,while-loop,Php,Laravel,While Loop,我刚接触Laravel,目前我在控制器中有一段代码,没有循环,当它工作时,它从数据库检索我的查询 public function dash($id, Request $request) { $user = JWTAuth::parseToken()->authenticate(); $postdata = $request->except('token'); $q = DB::select('SELECT * FROM maps WH
循环,当它工作时,它从数据库检索我的查询
public function dash($id, Request $request) {
$user = JWTAuth::parseToken()->authenticate();
$postdata = $request->except('token');
$q = DB::select('SELECT * FROM maps WHERE user_id = :id', ['id' => $id]);
if($q->num_rows > 0){
$check = true;
$maps = array();
while($row = mysqli_fetch_array($q)) {
$product = array(
'auth' => 1,
'id' => $row['id'],
'url' => $row['url'],
'locationData' => json_decode($row['locationData']),
'userData' => json_decode($row['userData']),
'visible' => $row['visible'],
'thedate' => $row['thedate']
);
array_push($maps, $product);
}
} else {
$check = false;
}
return response()->json($maps);
}
我试图循环使用从$q
返回的数据,并在两个键/val对上使用json\u decode
,但我甚至无法正确完成此操作。不要使用mysqli
来迭代结果()。从Laravel返回的结果是,因此您可以简单地使用foreach循环:
$q = DB::select('...');
foreach($q as $row) {
// ...
}
每个$row
都将是一个对象而不是数组:
$product = array(
'auth' => 1,
'id' => $row->id,
'url' => $row->url,
'locationData' => json_decode($row->locationData),
'userData' => json_decode($row->userData),
'visible' => $row->visible,
'thedate' => $row->thedate
);
不要使用mysqli
迭代结果()。从Laravel返回的结果是,因此您可以简单地使用foreach循环:
$q = DB::select('...');
foreach($q as $row) {
// ...
}
每个$row
都将是一个对象而不是数组:
$product = array(
'auth' => 1,
'id' => $row->id,
'url' => $row->url,
'locationData' => json_decode($row->locationData),
'userData' => json_decode($row->userData),
'visible' => $row->visible,
'thedate' => $row->thedate
);
您可以使用foreach
循环$q:
foreach ($q as $row) {
// Do work here
}
请参阅。您可以使用foreach循环$q
:
foreach ($q as $row) {
// Do work here
}
看
您没有在该函数中使用$postdata
,请将其删除
不要在Laravel中使用mysqli李>
你真是太棒了。它总是返回一个非假值,这就是为什么循环永远不会结束
为什么要在行数据上循环?只需返回查询结果——它们已经是一个数组了。如果您希望像“locationData”和“userData”这样的东西被解码为JSON,那么请使用一个带有方法的模型来为您完成这项工作。记住,使用MVC时,您应该始终将任何与数据相关的内容放入模型中
因此,更好的方法是使用Laravel:
您没有在该函数中使用$postdata
,请将其删除
不要在Laravel中使用mysqli李>
你真是太棒了。它总是返回一个非假值,这就是为什么循环永远不会结束
为什么要在行数据上循环?只需返回查询结果——它们已经是一个数组了。如果您希望像“locationData”和“userData”这样的东西被解码为JSON,那么请使用一个带有方法的模型来为您完成这项工作。记住,使用MVC时,您应该始终将任何与数据相关的内容放入模型中
因此,更好的方法是使用Laravel:
+我希望这里不要吹毛求疵,但我会调用模型Map
,因为每个实例只代表一行。我曾经这样做过,但后来我发现我经常做类似Map::where('foo','bar')->get()的事情
所以对于我正在编写的代码,保持其复数形式是有意义的,因为该模型负责所有地图,即地图表。虽然你肯定有道理。我认为这取决于典型用法的风格。+1希望这里不要吹毛求疵,但我会调用模型Map
,因为每个实例只代表一行。我过去经常这样做,但后来我发现我经常做Map::where('foo','bar')->get()
所以对于我正在编写的代码,保持其复数形式是有意义的,因为该模型负责所有地图,即地图表。虽然你肯定有道理。我认为这取决于典型用法的风格。