【问题标题】:Object of class stdClass could not be converted to string in Laravel?类 stdClass 的对象无法在 Laravel 中转换为字符串?
【发布时间】:2019-04-11 14:11:05
【问题描述】:

我尝试根据“Jadwal_kuliah”和“khs”表过滤数据,但发现错误“stdClass 类的对象无法转换为字符串”:

function jadwal_kuliah_json()
{
    $nim = Auth::guard('mahasiswa')->user()->nim;

    $tahun_akademik = \DB::table('tahun_akademik')->where('status', 'y')->first();

    $kelas = \DB::table('khs')
        ->select('kode_kelas')
        ->where('nim', $nim)
        ->get();

    $jadwal = \DB::table('jadwal_kuliah')
        ->join('khs', 'jadwal_kuliah.kode_mk', '=', 'khs.kode_mk')
        ->where('jadwal_kuliah.kode_kelas', $kelas)
        ->where('khs.nim', $nim)
        ->select('matakuliah.nama_mk', 'jadwal_kuliah.hari', 'jam_kuliah.jam', 'ruangan.nama_ruangan', 'dosen.nama', 'kelas.nama_kelas')
        ->get();

    return Datatables::of($jadwal)->make(true);
}

JSON

{
    "id": 36,
    "kode_kelas": "TI18A",
    "hari": "senin",
    "kode_mk": "TI001",
    "nidn": "15110185",
    "jam": "1",
    "kode_jurusan": "ifd3",
    "kode_ruangan": "LBKom",
    "kode_tahun_akademik": "20182",
    "semester": 1,
    "created_at": "2019-02-28 15:02:52",
    "updated_at": "2019-02-28 15:02:52"
}

需要改变什么?

【问题讨论】:

  • 你能分享完整和准确的错误信息,以及导致它的行吗?
  • $kelas是一个对象,必须改成字符串,但是如果类改成first()则只显示1条数据
  • 好吧,如果您认为这是可行的方法,那么将其“更改”为字符串。我建议使用某种 ID 或存储在数据库中的任何内容来加入这些表 - 但是,这样做有什么问题?
  • 我不知道使用什么查询来过滤数据。如果您使用的条件必须调用其他条件之一
  • “调用其他条件之一”是什么意思?为什么不使用像 ID 这样的标量值?由于我们对您的模型和表格的结构一无所知,因此很难提供帮助

标签: arrays laravel query-builder


【解决方案1】:

$kelas 是一个集合,您将其作为字符串条件传递给:

->where('jadwal_kuliah.kode_kelas',$kelas)

首先使用first() 像这样返回一个对象:

$kelas = \DB::table('khs')
          ->select('kode_kelas')
          ->where('nim',$nim)
          ->first();

那么你必须得到这个属性,而不是像:

->where('jadwal_kuliah.kode_kelas',$kelas->kode_kelas)

【讨论】:

  • 怎么改成字符串?
  • 我试过了,出现错误“此集合实例上不存在属性 [kode_kelas]。”因为 $kelas 必须使用 first()。我试过 first() 但只显示 1 个数据
  • 是的,它会返回一个对象,否则如果你想要一个集合,那么你将如何处理->where('jadwal_kuliah.kode_kelas', multiple_kode_kelas )中的多个kode_kelas
  • xjadwal_kuliah.kode_kelas 并且ykode_kelas 时,您正在执行类似select ... from .... where x=y 的where 子句,现在如果您在$kelas 中有一个集合,那么您' 将在集合的每个对象中以不同的kode_kelas 结束,所以你不能再做... where x=y 查询,你需要考虑... where x in (list of y)
猜你喜欢
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-28
  • 1970-01-01
  • 1970-01-01
  • 2017-09-21
  • 2011-04-06
相关资源
最近更新 更多