У меня есть модельный билет, принадлежащий пользователю. У каждого пользователя много билетов. Таким образом, user_id является внешним ключом для каждого билета. Как я могу построить запрос, который получит мне все Билеты, упорядоченные по имени пользователя? Я пыталсяEcto: Как заказывать результаты из определенного поля во внешнем ключе
query = from u in User,
preload: [:tickets]
query_tickets = from t in Ticket,
order_by: u.username,
preload: [users: ^query]
tickets = Repo.all(query_tickets)
Но он говорит, что у модели Ticket нет пользовательской ассоциации?
schema "tickets" do
field :subject, :string
field :body, :string
field :followup, :boolean
field :closed, :boolean
field :file, :string
field :filepath, :map
belongs_to :user, UserController
has_many :ticket_message, TicketMessageController
timestamps
end
schema "users" do
field :name, :string
field :username, :string
field :password, :string, virtual: true
field :password_hash, :string
field :email, :string
field :client, :string
field :role, :integer
has_one :services, ServiceController
has_many :tickets, TicketController
timestamps
end
Спасибо за ваш ответ, я пытался что (или что-то подобное раньше), но я получаю: '[ошибка] #PID <0.3814.0> работает MyApp.Endpoint прекращена сервера: локальный: 4000 (http) Запрос: GET/index_by_username ** (exit) было создано исключение: ** (Ecto.QueryError) web/контроллеры/ticket_controller.ex: 44: не удалось найти ассоциацию 'users' на модели MyApp.Ticket в query: ' –
' users' должно быть 'user' – Gazler
В моделях также возникла проблема. В ассоциациях вместо моделей были Контроллер. Он работает сейчас. Спасибо! –