【问题标题】:Laravel whereHas on M2M having same attributeLaravel whereHas 在 M2M 上具有相同的属性
【发布时间】:2020-04-18 20:04:37
【问题描述】:

我有两个模型,wordmeaning,处于多对多关系中。

型号含义:

public function words(){
        return $this->belongsToMany(Word::class);
}

示范词:

public function meanings(){
        return $this->belongsToMany(Meaning::class);
}

我需要找到与他们自己的名字相同的单词的所有含义。我试过了:

$meanings = Meaning::whereHas('word', function ($query) { 
               $query->where('meaning.name', 'word.name'); 
            })->get();

但这会搜索字面上称为“word.name”的含义。 任何的想法 ?谢谢!

【问题讨论】:

    标签: php mysql laravel eloquent many-to-many


    【解决方案1】:

    对于这种情况,有一个特殊的“where”,它是“whereColumn”,这个 用于在两列之间进行比较的地方:

    $meanings = Meaning::whereHas('word', function ($query) { 
                   $query->whereColumn('meaning.name', 'word.name'); 
                })->get();
    

    更多详情: https://laravel.com/docs/7.x/queries#where-clauses

    【讨论】:

    • 太棒了!谢谢;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    • 2019-02-21
    • 2018-07-20
    • 1970-01-01
    相关资源
    最近更新 更多