【问题标题】:Laravel- no prob showing directly inserted records, but records saved on app show 'Trying to get property of non-object error'Laravel-没有显示直接插入记录的问题,但保存在应用程序上的记录显示“尝试获取非对象错误的属性”
【发布时间】:2015-10-10 14:34:57
【问题描述】:

我正在laravel 中构建我的第一个项目:一个家谱。我有一个sql 脚本来插入我现有的记录(db 是postgres),并且我将有表格来添加/更新记录。

我看到了一个奇怪的错误。我正在使用家庭的基本路线/模型绑定(没什么花哨的),我可以查看所有家庭记录的索引,显示一个的信息,编辑一个的信息等。所有这些都适用于我的记录使用我的 sql 脚本插入,几乎 对于我使用应用程序新创建的记录,所有这些都可以正常工作:新记录出现在索引中,我可以对其进行编辑(例如:families/5/edit) ,但是当我尝试查看信息时(例如:families/5),我收到“尝试获取非对象的属性”错误(请参阅本文末尾的完整堆栈跟踪) .

我的第一个想法可能是一条冲突的路线,但我只有这个(所有其他路线都使用不同的词):

Route::resource('families', 'FamilyController');

store方法就是:

public function store(SaveFamilyRequest $request)
{
    $this->createFamily($request);
    return redirect('families');
}

我的 SaveFamilyRequest 具有确保 5 个必填字段存在的规则(但新记录已添加到数据库中,因此必须通过才能存储记录)。

控制器中的显示功能只显示带有该对象的显示视图:

   public function show(Family $family)
    {
        return view ('family.show', compact('family'));
    }

显示视图只是尝试显示 {{$family}} 对象的所有内容

当我查看数据库中的记录时,一切看起来都很好(我从我的应用程序中保存的字段较少,但我跳过的字段都是可以为空的)。

有趣的是我对Person 记录有完全相同的设置,并且对于那些页面(包括显示视图),对于导入的人员记录和我添加到应用程序。

我还应该看什么?

提前感谢任何帮助/线索!

堆栈跟踪:

ErrorException in 6141f213cedd055d619563849681212c line 16:
Trying to get property of non-object
in 6141f213cedd055d619563849681212c line 16
at HandleExceptions->handleError('8', 'Trying to get property of non-object', '/home/vagrant/Code/Family-laravel/storage/framework/views/6141f213cedd055d619563849681212c', '16', array('__path' => '/home/vagrant/Code/Family-laravel/storage/framework/views/6141f213cedd055d619563849681212c', '__data' => array('__env' => object(Factory), 'app' => object(Application), 'errors' => object(ViewErrorBag), 'family' => object(Family)), 'obLevel' => '1', '__env' => object(Factory), 'app' => object(Application), 'errors' => object(ViewErrorBag), 'family' => object(Family))) in 6141f213cedd055d619563849681212c line 16
at include('/home/vagrant/Code/Family-laravel/storage/framework/views/6141f213cedd055d619563849681212c') in PhpEngine.php line 42
at PhpEngine->evaluatePath('/home/vagrant/Code/Family-laravel/storage/framework/views/6141f213cedd055d619563849681212c', array('__env' => object(Factory), 'app' => object(Application), 'errors' => object(ViewErrorBag), 'family' => object(Family))) in CompilerEngine.php line 58
at CompilerEngine->get('/home/vagrant/Code/Family-laravel/resources/views/family/show.blade.php', array('__env' => object(Factory), 'app' => object(Application), 'errors' => object(ViewErrorBag), 'family' => object(Family))) in View.php line 135
at View->getContents() in View.php line 106
at View->renderContents() in View.php line 80
at View->render() in Response.php line 51
at Response->setContent(object(View)) in Response.php line 202
at Response->__construct(object(View)) in Router.php line 1225
at Router->prepareResponse(object(Request), object(View)) in ControllerDispatcher.php line 113
at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 114
at ControllerDispatcher->callWithinStack(object(FamilyController), object(Route), object(Request), 'show') in ControllerDispatcher.php line 69
at ControllerDispatcher->dispatch(object(Route), object(Request), 'App\Http\Controllers\FamilyController', 'show') in Route.php line 201
at Route->runWithCustomDispatcher(object(Request)) in Route.php line 134
at Route->run(object(Request)) in Router.php line 704
at Router->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Router.php line 706
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 671
at Router->dispatchToRoute(object(Request)) in Router.php line 631
at Router->dispatch(object(Request)) in Kernel.php line 236
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in VerifyCsrfToken.php line 50
at VerifyCsrfToken->handle(object(Request), object(Closure))
at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 49
at ShareErrorsFromSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 62
at StartSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure))
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 122
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 87
at Kernel->handle(object(Request)) in index.php line 54

【问题讨论】:

  • 听起来你应该看看你的观点。也许您正试图以不正确的方式访问家庭成员? ({{ $family->person->name }}) 也许你已经用你的 SQL 脚本将人添加到你的家庭中,但是你忽略了通过 Laravel 提出的请求。
  • hmmm... 我只是快速浏览了一下以防万一,但它比开始更直接:即使查看页面上唯一的内容是 Info: {{$ family}} 我什至还没有添加外键,所以就数据库而言,记录只有几个整数、几个字符串和一堆布尔值
  • 您是否有可能在 Family 模型上附加了一个奇怪的属性?当您尝试仅回显单个属性({{ $family->name }})时会发生什么?当您返回对象本身而不是视图时会发生什么?如果返回 $family 时应用崩溃;那么它肯定与可见对象属性有关......
  • 是的,我认为你的预感是正确的。
  • 是的,我认为你的直觉是正确的。经过许多不同的更改后,原始视图的行为现在已经全部更改:现在甚至只显示 {{family}} 而没有其他任何东西对在应用程序中创建的记录有效,而以前没有。所以我想说这完全是个谜,但是我注意到当我从有效日期字段中访问月份时,我也会遇到同样的错误(并确认记录有它),但我可以保存那个现在我原来的问题已经神秘地过去了。感谢您的帮助/想法

标签: postgresql laravel


【解决方案1】:

(经过一天的各种更改,同一个视图不再抛出之前的错误,所以我关闭了这个问题,以免其他人浪费时间)

【讨论】:

    猜你喜欢
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多