簡體   English   中英

ROR:MySQL查詢表達式

[英]ROR: MySQL query expression

我已經設置了模型,但是我不知道如何在控制器中編寫代碼以獲取以下SQL查詢的結果。

 SELECT users.name, events.* FROM users, events WHERE users.id=events.uid

非常感謝。

我重命名events.uid-> events.user_id
並為它們兩個都設置模型,事件的屬性是

  t.integer :user_id
  t.string :title
  t.datetime :hold_time
  t.string :place
  t.text :description

而新的錯誤是
undefined method title for #<User:0x3fb04d8>

抱歉打擾你們..

假設您已經建立了關聯,那么您應該可以這樣做:

u = Users.find(:all, :include => :events, :conditions => "users.id == events.uid")

我還不能發表評論(代表人數不足),所以我發布了答案,但是:

"users.id == events.uid"

應該:

"users.id = events.uid"

我不確定是否可以解決您的問題,但是可以。

如果要查找所有用戶和事件,可以這樣進行:

users = User.all
users.each do |user|
  = user.name
  user.events.each do |event|
    = event.name
  end
end

您的模型將如下所示:

class User < ActiveRecord::Base
  has_many :events
end

class Event < ActiveRecord::Base
  belongs_to :user
end

我敢肯定,還有另一種使用event.uid的方法,但是我還沒有那么先進。

您可以使用find_by_sql函數執行任意SQL,因此您可以執行以下操作:

e = Event.find_by_sql( 'SELECT events.*, users.name as user_name from users, events where user.id = events.uid')

現在e將包含具有匹配用戶名的所有事件,並且您可以像訪問其他任何屬性一樣訪問該用戶名,例如puts e.user_name 當然,由於用戶名是在SQL查詢中生成的,因此無法更改用戶名。

這種方法可能與數據庫無關應用程序的Rails原理不一致,但是我發現有時直接使用SQL而不是嘗試通過ActiveRecord實現同一目的要容易得多(可能更快)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM