【问题标题】:Fix error trying to get property of non-object Laravel修复尝试获取非对象 Laravel 属性的错误
【发布时间】:2020-01-10 03:34:38
【问题描述】:

我搜索了其他问题,但找不到答案。我收到以下错误。

试图获取非对象的属性“nameP”

控制器

public function store(Request $request)
{
    $hourID = $request->hour_id;
    $id = (Hour::latest()->first()->id) + 1;
    $projectID = $request->project_id;

    $sub = DB::table('hours')->join('projects',
        function ($join) use ($projectID, $id) {
            $join->on('hours.project_id', '=', 'projects.id')
                ->where('hours.project_id', '=', $projectID)
                ->where('hours.id', '=', $id);
        })->select('nameP')
        ->get()->first();

    $name = $sub->nameP;
    $hour = Hour::create([
        'id' => $hourID,
        'project_id' => $request->project_id,
        'day' => $request->day,
        'nHours' => $request->nHours,
        'notesH' => $request->notesH
    ]);

    return Response::json([$hour, 'nameP' => $name]);
}

如果我使用 Laravel Tinker 执行此代码,它可以工作,所以我不明白为什么会发生此错误。有什么建议吗?

【问题讨论】:

  • 是什么给了你 dd($sub);?
  • 正确的对象,就像我在工匠修补匠中运行的一样
  • 你正在使用->get()->first();。更改它或获取();或至第一个();然后 ->first();会给你对象和 ->get();可能是收藏

标签: php laravel controller


【解决方案1】:

如果您使用get() 方法,您将获得多条记录。

使用first() 你只会得到一个集合。

删除get(),只使用first()方法

$name = '';
$sub = DB::table('hours')->join('projects', function($join) use ($projectID,$id){
                                $join->on('hours.project_id', '=', 'projects.id')
                                ->where('hours.project_id', '=', $projectID)
                                ->where('hours.id', '=', $id);
                            })->select('nameP')->first();
if(!empty($sub)){
    $name=$sub->nameP;
}

【讨论】:

  • 认为它是真的,很高兴帮助快乐编码,:0
猜你喜欢
  • 2020-03-02
  • 1970-01-01
  • 2018-09-26
  • 2021-09-21
  • 2020-04-02
  • 1970-01-01
  • 1970-01-01
  • 2018-07-04
  • 1970-01-01
相关资源
最近更新 更多