【发布时间】:2019-07-08 14:22:35
【问题描述】:
自从我开始我的第一个 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'));
每当我按下该下载链接时,我都会看到一个带有 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');
}
}
【问题讨论】:
-
试图处理不是对象的东西,就好像它是一个对象一样。通常是因为代码中稍早一些的东西返回了一个错误(通常是一个布尔值),而不是它预期返回的对象。这意味着您没有检查错误
-
您必须查看文档以了解如何将
$data传递给PDF::loadView。我猜它没有从View::share获得份额 -
您确定
$id存在于数据库中吗? -
@Jerodev 我确定我使用了表中存在的
$id(1234,因为它很容易记住) -
另外我忘了补充一点,当它没有
$id时它可以工作,调用所有表并使用@foreach访问数据
标签: php laravel laravel-blade dompdf laravel-exceptions