【问题标题】:Trying to get property of non-object in PHP LARAVEL试图在 PHP LARAVEL 中获取非对象的属性
【发布时间】:2021-03-11 23:08:18
【问题描述】:

我是 laravel 和编程的新手,我想在 Isilowongan 表中插入,但我不能,我已经搜索了互联网并修复了我的数据库,但我仍然无法帮助我吗?

控制器:

public function isiLowongan($id)
{
    $lowongan = Reqlowongan::find($id);
    return view('mahasiswa/isi_lowongan', compact(['lowongan']));
}
public function addIsilowongan(Request $req, $id)
{
    $lowongan = Reqlowongan::find($id);
    $lowongan = new Isilowongan;
    $lowongan ->mahasiswa_id = auth()->user()->mahasiswa->id;
    $lowongan ->reqlowongan_id = $req->input('reqlowongan_id');
    $lowongan ->ipk = $req->input('ipk');
    $lowongan ->agama = $req->input('agama');
    $lowongan ->semester = $req->input('semester');
    $lowongan ->prodi = $req->input('prodi');
    $lowongan ->save();
    return redirect('index')->with('status', 'Terimakasih Sudah Mendaftar!');
}

这是我的数据库 database

这是我的错误:

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

这就是问题所在 line

马哈西斯瓦模型

public function isilowongan()
{
    return $this->hasMany(Isilowongan::class);
}

public function user()
{
    return $this->belongsTo(User::class);
}

Reqlowongan 模型

 protected $table="req_lowongan";
protected $fillable=['jenis_lowongan', 'ipk', 'agama', 'semester', 'prodi'];

public function instansi()
{
    return $this->belongsTo(Instansi::class);
}

public function isilowongan()
{
    return $this->hasMany(Isilowongan::class);
}

Isilowongan 模型

 protected $table="isi_lowongan";
protected $fillable=['mahasiswa_id', 'reqlowongan_id','ipk', 'agama', 'semester', 'prodi'];

public function mahasiswa()
{
    return $this->belongsTo(Mahasiswa::class);
}

public function reqlowongan()
{
    return $this->belongsTo(Reqlowongan::class);
}

public function status()
{
    $isilow = $this->all();
    $text = null;

    if($this->ipk >= $this->reqlowongan->ipk AND
    $this->agama == $this->reqlowongan->agama AND 
    $this->semester == $this->reqlowongan->semester AND
    $this->prodi == $this->reqlowongan->prodi){
        $text = 'LOLOS';
        return $text;
    }else{
        $text = 'TIDAK LOLOS';
        return $text;
    }
}

用户模型

protected $table='users';
protected $casts = [
    'email_verified_at' => 'datetime',
];

public function mahasiswa() 
{
    return $this->hasOne(Mahasiswa::class);
}

public function karyawan() 
{
    return $this->hasOne(Karyawan::class);
}

public function instansi() 
{
    return $this->hasOne(Instansi::class);
}

【问题讨论】:

  • 请附上完整的错误信息并指出它发生在哪一行。
  • 好的,抱歉,我已经收到错误消息,错误在哪里
  • 转储 auth()->user() 并查看它包含的内容。错误信息告诉你auth()->user()->mahasiswa 不是一个对象。
  • 不,不删除,dump。转储是一种显示变量所有详细信息的方法。
  • 这个怎么用? $lowongan ->mahasiswa_id = dump(auth()->user()->mahasiswa->id);

标签: php laravel


【解决方案1】:

您似乎在为变量 $lowongan 分配数据后立即覆盖了它:

$lowongan = Reqlowongan::find($id);
$lowongan = new Isilowongan;

这没有意义。根据您的模型 Reqlowongan,您与 Mahasiswa 没有直接关系,所以我假设您想使用当前登录用户的 mahasiswa_id:

use Auth;

之前

class YourController extends Controller {}

然后您可以像这样访问 mahasiswa_id:

Auth::user()->mahasiswa()->id;

完整示例:

use Auth;

class YourController extends Controller {

 public function addIsilowongan(Request $req, $id)
 {
  // $lowongan = Reqlowongan::find($id); // you dont use that
  // sidenote: $id would be the same as $req->input('reqlowongan_id')
  $lowongan = new Isilowongan;
  $lowongan->mahasiswa_id = Auth::user()->mahasiswa()->id;
  $lowongan->reqlowongan_id = $req->input('reqlowongan_id');
  $lowongan->ipk = $req->input('ipk');
  $lowongan->agama = $req->input('agama');
  $lowongan->semester = $req->input('semester');
  $lowongan->prodi = $req->input('prodi');
  $lowongan->save();

  return redirect('index')->with('status', 'Terimakasih Sudah Mendaftar!');
 }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 2018-02-21
    • 2015-09-22
    • 2017-03-20
    • 2014-03-25
    相关资源
    最近更新 更多