Я не совсем уверен, в чем проблема, потому что я не понимаю сообщение об ошибке, которое я получаю.Непонятные отношения проблемы извлечения отношения «принадлежит»
У меня есть следующие отношения на моей модели автомобиля
/**
* The dealer the vehicle belongs to (one-to-one relationship)
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function dealer()
{
return $this->belongsTo('App\Dealer');
}
/**
* The vehicle's specifications
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function specifications()
{
return $this->hasMany('App\Specification');
}
Если я вызываю метод ниже, когда есть «провинция» в запросе $ я получаю следующее сообщение об ошибке: Отсутствует аргумент 2 для App \ Project \ Frontend \ Repo \ Vehicle \ EloquentVehicle :: App \ Project \ Frontend \ Repo \ Vehicle {закрыть}()
Я также получаю сообщение об ошибке, когда в запросе есть «город».
public function vehicleSearchResults($request)
{
$allowedInput = array(
'year',
'make',
'model',
'city',
'province',
'price',
'Vehicle Type'
);
$query = $this->vehicle;
foreach($allowedInput as $value)
{
if($request->has($value))
{
switch ($value)
{
case 'year':
$query = $query->where('model_year', $request->input($value));
break;
case 'make':
$query = $query->where('make', $request->input($value));
break;
case 'model':
$query = $query->where('model', $request->input($value));
break;
case 'price':
$query = $query->where('price', $request->input($value));
break;
case 'city':
$query = $query->whereHas('dealer', function($subQuery, $request, $value)
{
$subQuery->where('city', $request->input($value))
->where('province', $request->input('province'));
})->with('dealer');
break;
case 'province':
$query = $query->whereHas('dealer', function($subQuery, $request, $value)
{
$subQuery->where('province', $request->input($value));
})->with('dealer');
break;
case 'Vehicle Type':
$query = $query->whereHas('specifications', function($subQuery, $request, $value)
{
$subQuery->where('spec', $value)
->where('spec_value', $request->input($value));
})->with('specifications');
break;
}
}
}
return $query->paginate(10);
}
Я понятия не имею, что означает ошибка, но он указывает на эту строку кода в корпусе коммутатора провинции.
$query = $query->whereHas('dealer', function($subQuery, $request, $value)
вам не хватает обратный вызов в 'с («спецификациями»)' должен быть 'с («спецификацией», функциями (спецификация) {})' Кроме того, 'with ('dealer')' – Beginner