我正在创建一个网站。所以,我已经将数据存储在数据库中。现在我想查看两个不同表中的数据。然后我尝试了下面的方法。但是,它给了我这个错误 -
Trying to get property 'firstname' of non-object (View: D:\wamp64\www\cheapfares\resources\views\invoices\des.blade.php)
但是,显然firstname在数据库表中。
我该如何解决这个问题?
控制器页面。 (InvoicesController.blade.php)
public function userinvoice($terms = '',$invoiceNo = '')
{
$invoice = Invoice::where('invoicereference', $invoiceNo)->get()->first();
$tr = DB::table('termsandconditions')
->where('topic', $terms)->get()->first();
$twoar = [];
$twoar['inv'] = $invoice;
$twoar['trms'] = $tr;
return view('invoices.des', ['twoar' => $twoar]);
}
查看页面。 (des.blade.php)
{{$twoar['inv']->firstname}}
{{$twoar['trms']->topic}}
路线。
Route::get('/invoice/adminuser-invoice/{invoiceno}', [
'uses' => 'InvoicesController@adminuserinvoice',
'as' => 'invoice.adminuser'
]);
答案 0 :(得分:0)
尽管将响应转换为Array可能是一个合适的解决方案,但异常的原因很可能在于数据库中没有有效的条目。
您可以像这样改进代码以减轻这种影响:
public function userinvoice($terms, $invoiceNo)
{
// Load invoice, or throw ModelNotFoundException/404 without valid entries.
$invoice = Invoice::where('invoicereference', $invoiceNo)->firstOrFail();
// load the terms.
$terms = DB::table('termsandconditions')
->where('topic', $terms)->first();
return view('invoices.des', compact('invoice', 'terms'));
}
在这个例子中,我在路由中提出了$terms
和$invoiceNo
义务参数。确保查询将提供正确的结果。此外,firstOrFail()
现在需要发票条目,条款是可选的。我不是将两个变量都分配给一个数组,而是将它们都发送到视图中,这样你就可以正确地声明它们的值,而不会使用数组键访问造成混乱。
您的观点:
{{$invoice->firstname}}
{{$terms->topic}}
答案 1 :(得分:0)
请尝试以下代码:
public function userinvoice($terms = '',$invoiceNo = '')
{
$invoice = Invoice::where('invoicereference', $invoiceNo)->get()->first();
$tr = DB::table('termsandconditions')
->where('topic', $terms)->get()->first();
return view('invoices.des', ['tr'=>$tr,'invoice'=>$invoice]); //Directly pass the mulitple values into the view
}
您的观看页面如下:
{{$invoice->firstname}}
{{$tr->topic}}
它可以帮助你的朋友。