Как преобразовать массив массивов в один массив в Vue.js? В моем php
back-end у меня есть код ниже, который извлекает данные из базы данных. Моя проблема теперь в том, что я не знаю, как преобразовать их в моей js
стороне в один массив.
Сторона PHP:
$name = DB::raw("CONCAT(emp.first_name, ' ', emp.last_name) AS name");
$nameCol = [];
$usedDate = '2018-07';
$date = 'attendance.date';
$total = 'attendance.total';
for($i = 1; $i<32; $i++){
if($i<10) $i = '0'.$i;
$names = DB::table('attendance')
->leftJoin('m_emp','m_emp.emp_key','=','attendance.emp_key')
->select($name,$date,$total)
->where(DB::raw("(DATE_FORMAT(attendance.date,'%Y-%m-%d'))"), '=', $usedDate.'-'.$i)
->get();
array_push($nameCol,$names);
}
return (array)$nameCol;
Результат выглядит так:
Внутри каждого массива выглядит так:
И, наконец, внутри это:
Могу ли я сделать для цикла на нем, чтобы преобразовать его в один массив и как? Или я могу сразу найти предмет внутри? Поскольку я пробовал поиск, используя способ, подобный этому, но я думаю, что это только поиск или работает в одном массиве (что моя причина, почему я хочу объединить их в один массив):
Сторона Vue.js
list.find( empName=> empName.name === 'John Doe')
//let assume list is the variable that receives data returned from php
//result for this one is undefined.
Любая идея как?
Вы можете использовать array_merge
вместо array_push
.
Я предполагаю, что вы используете Laravel
, вам нужно преобразовать collection
в array
до слияния, см. Пример:
$name = DB::raw("CONCAT(emp.first_name, ' ', emp.last_name) AS name");
$nameCol = [];
$usedDate = '2018-07';
$date = 'attendance.date';
$total = 'attendance.total';
for($i = 1; $i<32; $i++){
if($i<10) $i = '0'.$i;
$names = DB::table('attendance')
->leftJoin('m_emp','m_emp.emp_key','=','attendance.emp_key')
->select($name,$date,$total)
->where(DB::raw("(DATE_FORMAT(attendance.date,'%Y-%m-%d'))"), '=', $usedDate.'-'.$i)
->get();
// use array_merge
$nameCol = array_merge($nameCol,$names->toArray());
}
return (array)$nameCol;
array_push
.