【问题标题】:Laravel Eloquent requestLaravel 雄辩的请求
【发布时间】:2020-06-21 07:35:28
【问题描述】:

我有两个模型:Persons 和 PhoneNumbers

Persons.php

class Persons extends Model
{
    protected $table = 'persons';  
    protected $guarded = [];

    public function phoneNumbers() {
        return $this->hasMany('App\PhoneNumbers', 'persons_id', 'id');
    }
}

PhoneNumbers.php

class PhoneNumbers extends Model
{
    protected $table = 'phone_numbers';
    protected $guarded = [];

    public function persons() {
        return $this->belongsTo('App\Persons', 'persons_id', 'id');
    }
}

我的桌子:

1) persons (id, first_name, last_name, middle_name)
2) phone_numbers (id, person_phone, persons_id)

我有一个用于搜索的表单,其中包含 first_name、middle_name、last_name、person_phone。 我提出一个要求:

 $first_name = $request->first_name;
 $middle_name = $request->middle_name;
 $last_name = $request->last_name;

 $persons = Persons::where('first_name', 'LIKE', '%' . $first_name . '%')
            ->where('middle_name', 'LIKE', '%' . $middle_name . '%')
            ->where('last_name', 'LIKE', '%' . $last_name . '%')
            ->whereHas('phoneNumbers', function (Builder $query) {
                $person_phone = ((new \Illuminate\Http\Request)->get('person_phone'));
                $query->where('person_phone', 'like', '%' . $person_phone . '%')->first();
            })->latest()->paginate(5);

并得到一个错误:

SQLSTATE[42S22]:未找到列:1054 中的未知列“persons.id” 'where 子句' (SQL: select * from phone_numbers where persons.id = phone_numbers.persons_idperson_phone 喜欢 %% 限制 1)

似乎 Laravel 为我的列提供了“错误”的名称并生成了不正确的 SQL。我知道命名约定。但我找不到错误。 你能帮我用 Eloquent 编写正确的 SQL 吗?

【问题讨论】:

    标签: laravel eloquent


    【解决方案1】:

    试试

    $this->belongsTo('App\Persons');
    
    $query->where('phone_numbers.person_phone', 'like', '%' . $person_phone . '%')->first();
    

    这个也可以

    ->whereHas('phoneNumbers', function ($query) use ($request) {
                    $query->where('person_phone', 'like', '%' . $request->person_phone . '%')->first();
                })->latest()->paginate(5);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-08
      • 1970-01-01
      • 2023-03-11
      • 2022-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多