Добавление нескольких переменных в представление в 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);

также я видел этот вопрос в стеке над потоком, я думаю, что это может помочь вам сделать его в виде массива и передать его как одну переменную, смотрите здесь

Laravel - передать более одной переменной для просмотра

Другие вопросы по тегам