С тех пор, как я начал свой первый проект Laravel, у меня была ошибка Trying to get property 'column_name' of non-object
без остановки, и большую часть времени я мог ее исправить так или иначе, но проблема в том, что я понятия не имею,почему я получаю ошибку, или как я могу ее предотвратить.Например,
// In my controller I have this domPDF function...
public function pdfgen(Request $request, $id) {
$data = Table::find($id);
View()->share('data', $data);
if ($request -> has('download')) {
$pdf = PDF::loadView('pdf/pdfgen');
return $pdf ->download('pdfgen.pdf');
}
return view('pdf/pdfgen');
}
// In my blade file I have a table calling this column...
<td>{{ $data->column }}</td>
// and this link making the request in the pdfgen function...
<a class="btn btn-primary" href="{{ route('pdfgen', ['download'=>'pdf']) }}">Download PDF</a>
// And in my routes of web.php...
Route::get('/pdfgen/{id}', array('as' => 'pdfgen', 'uses' => 'PDFController@pdfgen'));
и всякий раз, когда я нажимаю эту ссылку для скачивания, я получаю страницу Whoops с trying to get property 'column' of non-object (View: /usr/src/workapp/resources/views/pdf/pdfgen.blade.php)
.Почему я получаю эту ошибку, а не диалог открытия / сохранения?
РЕДАКТИРОВАТЬ: Забыл добавить, прежде чем пытаться получить конкретные данные с $ id, я вызвал всю таблицу ($data = Table::all();
) и использовал @foreach
в виде лезвия, чтобы распечатать его в таблице
РЕДАКТИРОВАТЬ 2: Добавление модели
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Table extends Model
{
protected $table = 'table';
protected $primaryKey = 'id';
public $incrementing = false;
protected $fillable = [
// all columns are strings, even id
'id',
'column',
'column2',
'column3',
];
public function table2()
{
return $this->hasMany('App\Table2');
}
}