Использование hasManyThrough, где целевая таблица имеет один-к-одному
7 просмотра
1 ответ
1201 Репутация автора
Если мы возьмем пример Laravels на hasManyThrough
и изменить его следующим образом:
countries
id - integer
name - string
users
id - integer
country_id - integer
website_id - integer
name - string
websites
id - integer
title - string
Имея в users
качестве промежуточной связи, можно использовать hasManyThrough()
на country
модели , чтобы получить websites
?
Я пытался это, и это приводит к ошибке
namespace App;
use Illuminate\Database\Eloquent\Model;
class Country extends Model
{
/**
* Get all of the websites for the country.
*/
public function websites()
{
return $this->hasManyThrough('App\Website', 'App\User');
}
}
Illuminate\Database\QueryException: SQLSTATE[42S22]: Column not found: 1054 Unknown column
Может быть, users
должно быть много, websites
чтобы это работало?
Ответы (1)
0 плюса
860 Репутация автора
Вы можете изменить структуру таблицы, чтобы она соответствовала ожиданиям Laravel для комментариев @ Samir, или вы можете настроить ключи в соответствии с существующей структурой таблицы.
https://laravel.com/docs/5.8/eloquent-relationships
Типичные соглашения Eloquent по внешним ключам будут использоваться при выполнении запросов отношения. Если вы хотите настроить ключи отношения, вы можете передать их в качестве третьего и четвертого аргументов методу hasManyThrough. Третий аргумент - это имя внешнего ключа промежуточной модели. Четвертый аргумент - это имя внешнего ключа в окончательной модели. Пятый аргумент - это локальный ключ, а шестой аргумент - это локальный ключ промежуточной модели:
Я не уверен, что мой мозг все это правильно обработал, но попробуйте это:
public function websites()
{
return $this->hasManyThrough('App\Website', 'App\User','country_id','website_id','id','id');
}
Автор: matticustard
Размещён: 11.08.2019 08:16
Вопросы из категории :
- mysql Двоичные данные в MySQL
- mysql Насколько большой может быть база данных MySQL до того, как производительность начнет снижаться
- mysql Выбрать все столбцы, кроме одного в MySQL?
- mysql MySQL или PDO - каковы плюсы и минусы?
- mysql Как выбрать n-ую строку в таблице базы данных SQL?
- mysql MyISAM против InnoDB
- laravel Laravel & InnoDB
- laravel Кнопка возврата Laravel
- laravel ВСТАВИТЬ ИГНОР, используя Свободный Ларавель
- laravel Массовая вставка в Laravel с использованием красноречивого ORM
- laravel How can I find the current language in a Laravel view?
- laravel Как установить переменные в шаблоне лезвия Laravel
- eloquent Laravel eloquent counting a relation
- eloquent ORM: дружба / буддистские отношения
- eloquent Laravel - Eloquent or Fluent random row
- eloquent Как вернуть имя таблицы базы данных в Laravel
- eloquent Laravel объединяет запросы AS