【问题标题】:ErrorException Trying to get property of non-object laravelErrorException 试图获取非对象 laravel 的属性
【发布时间】:2020-05-11 18:45:04
【问题描述】:

嗯,你好。 我是 laravel 的新手,我想为工人列表创建一个程序。

我正在尝试访问这条路线:

http://127.0.0.1:8000/posts/create

还有错误信息。

错误异常 试图获取属性 '{"role":"pegawai","name":"asdasdasdasd1","email":"1asdad@ifocaproject.com","updated_at":"2020-05-11T18:26:31.000000Z" ,"created_at":"2020-05-11T18:26:31.000000Z","id":7}' 非对象

这是我的控制器。

public function create(Request $request)
    {

        $user = new \App\User;
        $user->role = 'pegawai';
        $user->name = $request['nama_pegawai'];
        $user->email = $request['email'];
        $user->password = bcrypt('rahasia');
        $user->remember_token = Str::random(60);
        $user->save();

        $request ->request->add(['user_id'-> $user->id]);
        $pegawai = \App\Pegawai::create($request->all());
        return redirect('/pegawai')->with('sukses','Data Berhasil Di-input');
    }

这是我的刀片。

<div class="modal-body">
    <form action="/pegawai/create" method="POST">
        {{ csrf_field() }}
        <div class="form-group">
            <label for="exampleFormControlInput1">Nama Pegawai</label>
            <input name="nama_pegawai" type="text" class="form-control"
                id="exampleFormControlInput1" placeholder="Joni">
        </div>
        <div class="form-group">
            <label for="exampleFormControlInput1">Email</label>
            <input name="email" type="text" class="form-control"
                id="exampleFormControlInput1" placeholder="eve@ifocaprojec.com">
        </div>
        <div class="form-group">
            <label for="exampleFormControlSelect1">Jenis Kelamin</label>
            <select name="jenis_kelamin" class="form-control" id="exampleFormControlSelect1">
                <option value="Laki-Laki">Laki-laki</option>
                <option value="Perempuan">Perempuan</option>
                <option value="-none-">-none-</option>
            </select>
        </div>
        <div class="form-group">
            <label for="exampleFormControlInput1">Umur</label>
            <input name="umur" type="text" class="form-control" placeholder="Cth:21">
        </div>
        <div class="form-group">
            <label for="exampleFormControlInput1">Agama</label>
            <input name="agama" type="text" class="form-control" placeholder="Cth:Islam">
        </div>
        <div class="form-group">
            <label for="exampleFormControlTextarea1">Alamat</label>
            <textarea name="alamat" class="form-control" rows="3"></textarea>
        </div>
        <div class="form-group">
            <label for="exampleFormControlSelect1">Divisi</label>
            <select name="divisi" class="form-control">
                <option value="Inbound">Inbound</option>
                <option value="Outbound">Outbound</option>
            </select>
        </div>
</div>

表用户:

表pegawai:

我错过了什么?任何帮助将不胜感激,谢谢。 对不起,我的英语不太好。

【问题讨论】:

  • add(['user_id'-&gt; $user-&gt;id]); 你打错箭头了,应该是=&gt;,而不是-&gt;
  • user对象中没有id,可以使用->create()代替save();
  • @mohammad.kaab $user-&gt;save() 方法自动从数据库中获取插入ID并保存在对象中
  • 我认为,保存返回的是布尔值而不是整数。

标签: php laravel


【解决方案1】:

您的代码可能有拼写错误。 这里必须是=&gt; 而不是-&gt;

$request->request->add(['user_id' => $user->id]);

【讨论】:

  • 虽然正确,但最好将其保留为评论(它已经是),因为拼写错误的答案不太可能对其他人有所帮助。请考虑将问题/投票标记为拼写错误/语法错误。
【解决方案2】:

我相信你需要在 ->save() 之后重新加载数据库中的数据:

.......

$user->save();

$request ->request->add(['user_id'-> $user->fresh()->id]);

【讨论】:

  • 不正确。使用new Model() 后跟-&gt;save() 创建的模型将分配一个主键。
猜你喜欢
  • 2017-08-02
  • 2018-04-14
  • 1970-01-01
  • 2020-09-30
  • 1970-01-01
  • 2021-07-19
  • 2016-11-30
  • 2017-02-25
  • 1970-01-01
相关资源
最近更新 更多