Laravel 11 Штауденмейр принадлежит к неопределенным отношениямPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Laravel 11 Штауденмейр принадлежит к неопределенным отношениям

Сообщение Anonymous »

У меня возникла проблема с использованием пакета BelongsToThrough от Staudenmeir. Вот что у меня есть в моем проекте Laravel 11:
База данных:

Код: Выделить всё

* ----------------------- *
|          users          |
* ----------------------- *
|   + id                  |
|   + address_id          |
* ----------------------- *

* ----------------------- *
|        addresses        |
* ----------------------- *
|   + id                  |
|   + country_code_id     |
* ----------------------- *

* ----------------------- *
|      country_codes      |
* ----------------------- *
|   + id                  |
* ----------------------- *
User.php

Код: Выделить всё

class User extends Model
{
public function address(): BelongsTo
{
return $this->belongsTo(Address::class);
}

public function country_code(): BelongsToThrough
{
return $this->belongsToThrough(CountryCode::class, Address::class);
}
}
Address.php

Код: Выделить всё

class Address extends Model
{
public function user(): HasOne
{
return $this->hasOne(User::class);
}

public function country_code(): BelongsTo
{
return $this->belongsTo(CountryCode::class);
}
}
CountryCode.php

Код: Выделить всё

class CountryCode extends Model
{
public function address(): HasMany
{
return $this->hasMany(Address::class);
}

public function users(): HasManyThrough
{
return $this->hasManyThrough(User::class, Address::class);
}
}
UserController.php

Код: Выделить всё

class UserController extends Controller
{
public function show(Request $request, User $user)
{
# access countryCode through address from user
# not working:
return (new UserResource($user))->load('country_code');
}
}
CountryCodeController.php

Код: Выделить всё

class CountryCodeController extends Controller
{
public function show(Request $request, CountryCode $countryCode)
{
# access user through address from countryCode
# working:
return (new CountryCodeResource($countryCode))->load('user');
}
}
Я могу запросить без проблем: Теперь проблема:
Если я пробую обратный метод hasManyThrough, belongsToThrough, предоставленный Штауденмейром (используя UserResource->load('country_code')), я всегда получаю следующее сообщение об ошибке:

Код: Выделить всё

"message": "Call to undefined relationship [country_code] on model [App\\Models\\User]."
Есть ли проблема в моем коде или я что-то неправильно понял? По моему мнению, все необходимые отношения должны быть определены, и даже hasManyThrough работает как шарм.
Если вам нужна дополнительная информация, просто спросите.
Заранее спасибо за помощь!
Изменить
Я также пробовал это с camelCase именование, но это не решило проблему.

Подробнее здесь: https://stackoverflow.com/questions/782 ... lationship
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»