Добавление нескольких переменных в представление в Laravel
$header = DB::select("SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'tableOne'");
$secheader = DB::select("SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'tableTwo'");
$variables = DB::table('tableThird')->get();
$variables = json_decode(json_encode($variables, true));
$tbHeading = json_decode(json_encode($header, true)); //json object
return view('admin/crosstabdata', compact('secheader','tbHeading','variables'));
Когда я печатаю все три переменные для просмотра (crosstabdata.blade.php
) файл, он сказал:
Переменная secheader не существует.
5 ответов
Попробуй это;
$header = DB::select("SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'tableOne'");
$data['secheader'] = DB::select("SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'tableTwo'");
$variables = DB::table('tableThird')->get();
$data['variables'] = json_decode(json_encode($variables, true));
$data['tbHeading'] = json_decode(json_encode($header, true));
return view('admin/crosstabdata', $data);
Надеюсь, что этот подход поможет.
Попробуйте так:
return View::make('admin.crosstabdata')
->with(compact('secheader', 'tbHeading', 'variables'));
Ваш код должен работать. Возможно проблема в видении.
В качестве альтернативы вы можете передать переменные в ваши представления следующим образом:
$secheader = /** ... */;
$variables = /** ... */;
$tbHeading = /** ... */;
return view('admin.crosstabdata')
->with('secheader', $secheader)
->with('variables', $variables)
->with('tbHeading', $tbHeading);
Тогда, по вашему мнению, вы можете получить к ним доступ, как $secheader
, $variables
& $tbHeading
,
Вы можете передать ассоциативный массив with()
метод, так что ваш оператор возврата может выглядеть так:
return view('admin/crosstabdata')->with(['secheader' => $secheader, 'tbHeading' => $tbHeading, ...]);
Я не пытался передать три vatiables напрямую, но вот способ передать две переменные
return view('admin/crosstabdata', compact('secheader'))->with('tbHeading', $tbHeading);
также я видел этот вопрос в стеке над потоком, я думаю, что это может помочь вам сделать его в виде массива и передать его как одну переменную, смотрите здесь