在使用“POST”方法将数据存储到控制器之前查询$request结果

问题描述 投票:0回答:1

首先,我很抱歉,因为我是 Laravel 的新手。我想用

$request->id_anggota
作为
"POST"
方法的结果进行查询/雄辩,这样我就可以从另一个表获取
email
属性并将
email
值插入到
alokasikegiatan
表中。请帮忙!

我的代码:

public function getEmail($request)
{
    $em = '';
    //code...
    $row_peg = DB::table('users')->where('nip', $request->id_anggota)->first()->email;
    if (count($row_peg) > 0) {
        $em = $row_peg;
    } else {
        $em = DB::table('registeredmitra')->where('sobatid', $request->id_anggota)->first()->email;
    };
    return $em;
}

我想在查询这个代码之前传递该代码

public function store_alok(Request $request)
{
    try {
        AlokasiKegiatan::insert([
            'id_keg' => $request->id_keg,
            'email' => $this->getEmail($request),
        ]);
    } catch (\Exception $e) {
        throw new Exception($e->getMessage());
    };
}

如你所见,我称之为:

'电子邮件' => $this->getEmail($request),

但是我收到了这个错误

尝试获取非对象的属性“电子邮件”

还有其他可能的方法吗?谢谢您的帮助!

php laravel eloquent response
1个回答
0
投票

您尝试访问一条记录,即使它不存在,两次都在您的 getEmail 函数中。将

->email
移动到第一个
if
子句中,并为第二个子句添加另一个,以确保在尝试访问记录之前该记录存在。

public function getEmail($request)
{
    $em = '';
    //code...
    $row_peg = DB::table('users')->where('nip', $request->id_anggota)->first();
    if ($row_peg) {
        $em = $row_peg->email;
    } else {
        $row = DB::table('registeredmitra')->where('sobatid', $request->id_anggota)->first();
        if($row) {
            $em = $row->email;
        }
    };
    return $em;
}
© www.soinside.com 2019 - 2024. All rights reserved.