如何在 Laravel 5.4 中创建自己的范围

How to create own scope in Laravel 5.4

我对 Laravel 5.4

中的范围有一些难以理解的问题

我尝试使用简单的 where like 语法创建一个范围。

 class Addresses extends Model
{
    protected $table = "Addresses";
    protected $primaryKey = 'adress';
    public $timestamps = false;

    public function scopeSearchAdress($query, $searchTerm)
    {
        return $query->where('adress', 'LIKE', '%'.$searchTerm.'%s');
    }

    public function company()
    {
        return $this->hasOne(Company::class, 'adress');
    }

    public function contactPerson()
    {
        return $this->hasMany(ContactPerson::class, 'adress');
    }

}

当我启动 php artisan tinker 并编写此命令时: App\Address::searchAdress('1330')->get() 我明白了:

Illuminate\Database\Eloquent\Collection {#695
     all: [],
   }

而且我不明白为什么我得到一个空数组。如果我在 MSSQL 中进行查询,我得到的地址为 address=1330

我猜问题出在字符串和整数值上

你正在传递一个字符串,使用这个

App\Address::searchAdress(1330)->get();

更改范围查询

return $query->where('adress', '=', $searchTerm);