![](/img/trans.png)
[英]Laravel: Object of class Illuminate\Database\Eloquent\Builder could not be converted to string
[英]Laravel 8 Query - Object of class Illuminate\Database\Eloquent\Builder could not be converted to string
我正在显示汽车列表,所有这些汽车都归不同的用户所有。 我的汽车 model 与我的用户 model 有一个user_id
外键的关系。 我试图通过用户first_name通过 model 查询汽车,但我得到Object of class Illuminate\Database\Eloquent\Builder could not be converted to string
错误如果我只查询usercar model,搜索工作正常,但一旦我尝试将用户 model 列添加到查询中,就会出错。
Usercar.php
<?php
namespace App\Models;
use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model;
class Usercar extends Model
{
use BelongsToTenant;
protected $guarded = [];
public function user()
{
return $this->belongsTo(User::class);
}
public function car()
{
return $this->belongsTo(Car::class, 'car_id');
}
public static function search($query)
{
return empty($query) ? static::query()
: static::where('car_id', 'like', '%'.$query.'%')
->orWhere('car_class', 'like', '%'.$query.'%')
// Problem starts here
->orWhereHas('user', function($query){
$query->where('first_name', 'like', '%'.$query.'%');
});
}
}
ShowUserCars.php
...
public function render()
{
$query = Usercar::search($this->search)
->with('user')
->orderBy($this->sortField, $this->sortAsc ? 'asc' : 'desc');
return view('livewire.show-user-cars', [
'usercars' => $query->paginate($this->perPage),
'currentUser' => auth()->user()
]);
}
}
谢谢@lagbox 的指导。 我能够使用下面的代码找到解决方案。
...
->orWhereHas('user', function($q) use($query){
$q->where('first_name', 'like', '%'.$query.'%');
});
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.