Если ваш массив всегда индексируется последовательно (например, «page1» всегда находится в индексе «0»), это довольно просто:
$List = array('page1', 'page2', 'page3', 'page4', 'page5');
$CurrentPage = 3; // 'page4'
while (key($List) !== $CurrentPage) next($List); // Advance until there's a match
Я лично не полагаюсь на автоматическую индексацию, потому что есть всегда есть шанс, что автоматический индекс может измениться. Вы должны явно указать ключи:
$List = array(
'1' => 'page1',
'2' => 'page2',
'3' => 'page3',
);
EDIT: Если вы хотите проверить значения массива (вместо ключей), используйте current()
:
while (current($List) !== $CurrentPage) next($List);
Попробуйте это:
$results = DB::table('users')->toSql();
dd($results);
Примечание: доберитесь (), был заменен toSql () для отображения необработанного SQL-запроса.
Мой способ сделать это, на основе представления журнала, только должен изменить файл app/Providers/AppServiceProvider.php
:
app/Providers/AppServiceProvider.php
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//
DB::listen(function ($query) {
$querySql = str_replace(['?'], ['\'%s\''], $query->sql);
$queryRawSql = vsprintf($querySql, $query->bindings);
Log::debug('[SQL EXEC]', [
"raw sql" => $queryRawSql,
"time" => $query->time,
]
);
});
}
$users = DB::table('users')
->select(DB::raw('count(*) as user_count, username '))
->where('uid', '>=', 10)
->limit(100)
->groupBy('username')
->get()
;
dd($users);
storage/logs/laravel-2019-10-27.log
: [2019-10-27 17:39:17] local.DEBUG: [SQL EXEC] {"raw sql":"select count(*) as user_count, username from `users` where `uid` >= '10' group by `username` limit 100","time":304.21}
С Laravel 5.8.15 конструктор запросов теперь имеет dd
и dump
методы, таким образом, можно сделать
DB::table('data')->where('a', 1)->dump();
Я сделал это журналами запросов слушания и добавлением к массиву журнала:
//create query
$query=DB::table(...)...->where(...)...->orderBy(...)...
$log=[];//array of log lines
...
//invoked on query execution if query log is enabled
DB::listen(function ($query)use(&$log){
$log[]=$query;//enqueue query data to logs
});
//enable query log
DB::enableQueryLog();
$res=$query->get();//execute