【问题标题】:query builder get modal instance [duplicate]查询生成器获取模式实例
【发布时间】:2018-06-07 11:16:00
【问题描述】:

我正在使用 Laravel 5.5。

我正在尝试使用 Laravel 的查询生成器获取对象实例。

public function functionName(Request $request) {
    $seance = Seance::where('id_seance', '=', $request->idSeance)->get();

    return $seance->type_seance;
}

我的模特:Seance(id_seance, type_seance, capacite_seance, niveau_seance, avec_coach, date_seance, heure_seance).

但是我得到了这个错误:

异常:此集合中不存在属性 [type_seance] 实例

感谢您的帮助!

【问题讨论】:

    标签: php laravel laravel-query-builder


    【解决方案1】:

    Get()方法返回一个集合对象,它就像一个数组,你需要使用first方法来获取第一个对象:

    public function functionName(Request $request) {
        $seance = Seance::where('id_seance', '=', $request->idSeance)->first();
    
        return $seance->type_seance;
    }
    

    您也可以使用 find() 方法,但 id_seance 应该是您表的主键:

    $seance = Seance::find($request->idSeance);
    return $seance->type_seance;
    

    【讨论】:

    • @YounelL 非常感谢!
    • 不客气,如果我的回答解决了你的问题,你可以标记为已接受
    【解决方案2】:

    使用first() 而不是get() 来获取对象而不是对象集合:

    $seance = Seance::where('id_seance', $request->idSeance)->first();
    

    here解释了这些方法之间的区别。

    【讨论】:

    • 如果他正确设置了主键,他可以使用Seance::find($request->idSeance)
    • @Phiter 与 find,这是有效的!但是where 是错误的方式?
    • 非常感谢!
    • find()where()->first() 的快捷方式,它仅按主键搜索。两种方式都可以,但如果您正确设置自定义 PK,我会使用 find()
    • Find 尝试根据表的主键(通常我们称之为 id)从表中找到唯一的行。也可以用where,结果基本一样,但是find可读性更强。
    【解决方案3】:

    当使用get() 方法时,它将返回collection 而不是模型的实例。我建议改用first() 方法。

    更好的是,使用Seance::find($request->idSeance)Seance::findOrFail($request->idSeance)。这假设您已正确定义模型上的主键。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-07
      • 2014-02-15
      • 2017-05-22
      • 2021-07-08
      • 1970-01-01
      相关资源
      最近更新 更多