Этот код в черте, вы используете Тип подсказки . Однако laravel будет предполагать, что пространство имен Builder
равно App\Traits
. Таким образом, возникает ошибка.
Вы можете добавить эту строку вверху вашей черты:
use Illuminate\Database\Eloquent\Builder;
или удалить подсказку типа Builder
.
По соглашению, Eloquent возьмет имя «модели змеи» модели-владельца и добавит к ней _id
. Поэтому по умолчанию eloquent будет предполагать, что foreign_key равен document_id
. Однако значение Foreign_key - doc_id
, поэтому его необходимо указать.
Для ApplicationDocument:
public function document()
{
return $this->belongsTo('App\Models\Document', 'doc_id');
}
Для Document рекомендуется использовать множественное число имя метода:
public function applicationDocuments()
{
return $this->hasMany('App\Models\ApplicationDocument', 'doc_id', 'id');
}
Применить use($appID)
для введения $appID
в закрытие.
$previousDoc= Document::whereHas('applicationDocuments', function (Builder $query) use ($appID) {
$query->where('application_id', $appID);
})->where('name', $name)->get();