У меня есть следующие схемы Экты:запросов с внешними ключами в Экто Модели
schema "videos" do
field :name, :string
field :mpdName, :string
field :urlPlayready, :string, size: 500
field :urlWidevine, :string, size: 500
field :urlFile, :string, size: 500
field :custom_data, :string, size: 500
field :drm_today, :boolean
field :vote, :integer
has_many :user_videos, VideoBackend.UserVideos
has_many :users, through: [:user_videos, :user]
timestamps
end
schema "users" do
field :name, :string
field :email, :string , [:primary_key]
field :encrypted_password, :string
field :password, :string, virtual: true
has_many :user_videos, VideoBackend.UserVideos
has_many :videos, through: [:user_videos, :video]
timestamps
end
schema "user_videos" do
belongs_to :users, VideoBackend.User
belongs_to :videos, VideoBackend.Video
field :time, :float
field :device, :integer
timestamps
end
Теперь я хочу, чтобы сделать запрос, выберите user_videos данные конкретный «пользователь» и конкретное «видео». В SQL я хотел бы написать этот простой запрос:
SELECT FROM user_videos WHERE user = "user" and video = "video"
Я попытался написать следующий экто запрос, но он не работает:
def single_userVideo(user,video) do
from u in UserVideos,
where: u.user == ^user and u.video == ^video
end
Вы знаете, как я мог бы решить эту проблему?
Проблема заключается в том, что он бросает мне эту ошибку: «поле VideoBackend.UserVideos.user в котором не существует в исходнике модели в запросе: от u в VideoBackend.UserVideos, где: u.user ==^1, где: u.video ==^1 " Это происходит, потому что я не добавил« пользователь »и« видео » "в модели" user_videos "? –
Вы должны использовать 'user_id' и' video_id', как я указал в ответе. – Gazler
Спасибо. Это была проблема конвенции. В моем случае я должен использовать users_id и videos_id –