【问题标题】:How do I use the Laravel ORM to join on a string column?如何使用 Laravel ORM 加入字符串列?
【发布时间】:2015-04-24 21:24:48
【问题描述】:

我有一个 voters 表和一个 voter_tags 表:

voters:
  id int
  ... // some other stuff

voter_tags:
  id int
  voter_id int
  tag string

voter_tag 表非常简单,并不需要 id,但这很好。我不想为 voter_tag 建立一个模型,因为这看起来真的很重量级。 (是吗?)

我想在投票者模型中添加一个函数:

class Voter extends Model {
  public function voter_tag(){
    return $this->hasMany(?); // what goes here?
  }

  // ... more stuff
}

虽然我知道如何将这种关系与另一个模型联系起来(例如,voter_phone 模型工作正常),但如果我只想从该函数调用中获取字符串列表怎么办?我是否需要制作一个 voter_tag 模型来显示标签列表?看起来真的很重量级。

ORM 是否有一种轻量级的方式来包含连接表中的字符串列表?

【问题讨论】:

    标签: laravel join orm


    【解决方案1】:

    好吧,雄辩的方式不是IMO那么重量级。易于设置,您可以获得很多好处和语法糖。在引擎盖下将执行完全相同的查询。话虽如此。如果你真的不想创建另一个模型,你可以像这样使用Query Builder

    DB::table('voter_tags')
        ->join('voters', 'voters.id', '=', 'voter_tags.voter_id')
        ->where('voters.id', '=', $this->id)
        ->count();
    

    希望对你有帮助!

    【讨论】:

    • 我知道它会生成与我手动完成的查询相同的查询,但是在模型甚至可以执行sql之前加载和解析模型是否有很多开销?
    猜你喜欢
    • 2022-11-20
    • 1970-01-01
    • 2019-12-18
    • 2021-07-03
    • 2017-01-14
    • 2022-07-01
    • 2020-09-03
    • 1970-01-01
    相关资源
    最近更新 更多