小島健太郎
kojim****@gmail*****
2013年 3月 21日 (木) 17:48:34 JST
ありがとうございます おかげさまでうまくいきました。 大変参考になりました。 小島 ***************************** 2013年3月21日 17:25 tsuji kuni <kunit****@gmail*****>: > あ、その場合なら、 > > s1.staff_name as s1_staff_name, > と、別名にすれば、くべつてまきますよ。取り出すときは、 > s1_staff_nameと > 別名にした名前でとれます。 > > 2013/03/21 16:45 "小島健太郎" <kojim****@gmail*****>: > >> ご回答ありがとうございます。 >> ご提案頂いたようにモデルを >> >> //Model >> function getList(){ >> $this->db->select("s1.staff_name,s2.staff_name,s3.staff_name"); >> $this->db->from(t_daichou as d); >> $this->db->join("m_staff as s1","d.uke_id=s1.staff_id","left"); >> $this->db->join("m_staff as s2","d.tai_id=s2.staff_id","left"); >> $this->db->join("m_staff as s3","d.update_id=s3.staff_id","left"); >> return $this->db->get(); >> } >> >> のように修正しましたが、エラーの内容が変わりませんでした。 >> なのでView側で >> >> var_dump(rsList->result()); >> >> として中身を確認したところ、項目名は全て「s1.」「s2.」などがなくなった状態となっていました。 >> >> とり急ぎこれは「ムリ」と判断して、アクティブレコードを使わないく方向で解決しようと思います。 >> たびたびどうもありがとうございました。 >> (自分が大きな勘違いをしている可能性がありますが) >> >> もし同様のことを試していただいて、うまくいくやり方がありましたらご連絡いただけると幸いです。 >> >> 小島 >> >> **************************** >> >> 2013年3月21日 15:32 tsuji kuni <kunit****@gmail*****>: >> > こんにちは。 >> > Kunitsujiともうします。 >> > >> > $List->s1.staff_name; >> > エラーの内容を見る限り、 >> > この書き方に問題がある、と言うことだとおもいます。 >> > SQLの書き方のs1. staff_nameというものが、phpでは理解できない、ということではないでしょうか。 >> > 細かく検証してないので、詳しくはわかりませんが、 >> > SELECT s1.staff_name as s1_staff_name >> > とか事前に変えておけば間違いはないと思います。 >> > そのような複数テーブルでの全ての項目を取り出した場合、結果がどういう形で取り出せているかは、 >> > var_damp等で確認してみれば、わかるかもしれませんね。 >> > >> > 2013/03/21 13:03 "小島健太郎" <kojim****@gmail*****>: >> > >> >> すみません、あとは解決できるつもりでしたが >> >> 解決できなかったので再度相談させてください。 >> >> >> >> 同問題でModel側で1つのマスタを複数回参照した後、 >> >> ControllerとViewで下記のような流れでデータを取り出そうと >> >> していますが、予想と異なりうまくいきませんでした。 >> >> >> >> //Model >> >> function getList(){ >> >> >> >> $this->db->select("*"); >> >> $this->db->from(t_daichou as d); >> >> $this->db->join("m_staff as s1","d.uke_id=s1.staff_id","left"); >> >> $this->db->join("m_staff as s2","d.tai_id=s2.staff_id","left"); >> >> $this->db->join("m_staff as s3","d.update_id=s3.staff_id","left"); >> >> >> >> return $this->db->get(); >> >> } >> >> >> >> //Controller >> >> function listAll(){ >> >> $data[rsList] = $this->m_sample->getList(); >> >> $this->load->view('v_listAll',$data); >> >> } >> >> >> >> //View >> >> foreach($rsList->result() as $List){ >> >> //test >> >> echo $List->s1.staff_name; >> >> echo $List->s2.staff_name; >> >> echo $List->s3.staff_name; >> >> } >> >> >> >> エラーの内容 >> >> Undefineed property:stdClass::$s1 >> >> FIlename:libraries/Loader.php(673):eval()'d code >> >> >> >> これもまた何かViewでの記述方法があるのでしょうか? >> >> (Codeigniter以前の未熟な問題だったらすみません) >> >> たびたび申し訳ありません、宜しくお願い致します。 >> >> >> >> 小島 >> >> >> >> ********************************* >> >> >> >> 2013年3月21日 9:57 小島健太郎 <kojim****@gmail*****>: >> >> > お世話になっております。 >> >> > 質問者です。 >> >> > ご回答ありがとうございます。 >> >> > >> >> > みなさまからアドバイス頂いたように >> >> > >> >> > $this->db->join("m_staff as s1","d.uke_id=s1.staff_id","left"); >> >> > $this->db->join("m_staff as s2","d.tai_id=s2.staff_id","left"); >> >> > $this->db->join("m_staff as s3","d.update_id=s3.staff_id","left"); >> >> > >> >> > の書き方で正常に動作することを確認することができました。 >> >> > 大変助かりました。 >> >> > また、アクティブレコードを使用することのメリットも大変参考になりました。 >> >> > >> >> > 今後ともよろしくお願いいたします。 >> >> > >> >> > 小島 >> >> > >> >> > >> >> > **************************************** >> >> > >> >> > 2013年3月20日 18:27 齊藤保 <saito****@jin-s*****>: >> >> >> 戸田様 >> >> >> >> >> >> ご教示ありがとうございます。 >> >> >> とてもよく理解出来ました。 >> >> >> 弊社でも少し研究してみます。 >> >> >> >> >> >> >> >> >> >> >> >> 2013年3月20日 15:27 戸田 広 <info****@sciss*****>: >> >> >> >> >> >>> こんにちは、戸田です。 >> >> >>> >> >> >>> 弊社では、上記の記述を見て分かる通り、アクティブレコードを >> >> >>> 使用するのとSQLを自前で組むことの差異を感じられなかったため >> >> >>> 使用しない選択をしたのですが、アクティブレコードを使用する事の >> >> >>> メリット等ありましたら、ご教示いただけるとありがたいです。 >> >> >>> >> >> >>> >> >> >>> 私がすぐ思いつく大きな違いは 2点ありまして、 >> >> >>> その違いは、開発内容で言えば >> >> >>> 初期条件が FIX して変わりにくい委託開発よりも >> >> >>> 常に変化・柔軟な対応を求められる >> >> >>> 自社パッケージの開発・展開などで利いてくると思っています。 >> >> >>> >> >> >>> >> >> >>> 1. Active Record を使うと、仮に RDBMS が変わることになっても >> >> >>> Model のコードを変更する必要がありません。 >> >> >>> >> >> >>> 2. CodeIgniter では、 Active Record を使うと >> >> >>> /application/config/database.php で設定できる dbprefix が >> >> >>> すべての SQL に対して自動的に付与されるようになっています。 >> >> >>> dbprefix を変更する時は、 database.php を書き換えるだけで >> >> >>> Model のコードを変更せずに、一元的に変更できます。 >> >> >>> >> >> >>> >> >> >>> >> >> >>> 以上です。 >> >> >>> >> >> >>> >> >> >>> >> >> >>> On 2013/03/20, at 12:56, 齊藤保 wrote: >> >> >>> >> >> >>> 横入りで失礼いたします。 >> >> >>> JIN SOFTWAREという会社で、自社製品に >> >> >>> CodeIgniterを使用させていただいている齊藤と申します。 >> >> >>> よろしくお願いいたします。 >> >> >>> >> >> >>> アクティブレコードは弊社では使用しておらず、 >> >> >>> SQLをダイレクトに組んで投げる方式をとっておりますが、 >> >> >>> アクティブレコードが引数を元に最終的にはSQLを組み上げる >> >> >>> ものであるならば、下記のような書き方になるのかと、 >> >> >>> 推測します。 >> >> >>> >> >> >>> $this->db->select("*"); >> >> >>> $this->db->from(t_daichou as d); >> >> >>> $this->db->join("m_staff as s1","d.uke_id=s1.staff_id","left"); >> >> >>> $this->db->join("m_staff as s2","d.tai_id=s2.staff_id","left"); >> >> >>> $this->db->join("m_staff as >> >> >>> s3","d.update_id=s3.staff_id","left"); >> >> >>> >> >> >>> これによって内部的に >> >> >>> select * from t_daichou as d >> >> >>> left join m_staff as s1 on d.uke_id=s1.staff_id >> >> >>> left join m_staff as s2 on d.tai_id=s2.staff_id >> >> >>> left join m_staff as s3 on d.update_id=s3.staff_id >> >> >>> >> >> >>> というSQLが投げられるようならこれでいけるかと >> >> >>> 思います。 >> >> >>> >> >> >>> 弊社では、上記の記述を見て分かる通り、アクティブレコードを >> >> >>> 使用するのとSQLを自前で組むことの差異を感じられなかったため >> >> >>> 使用しない選択をしたのですが、アクティブレコードを使用する事の >> >> >>> メリット等ありましたら、ご教示いただけるとありがたいです。 >> >> >>> >> >> >>> ちなみに弊社では今後も自社製品(受注も含め)には全て >> >> >>> CodeIgniterを使用する計画でおります。 >> >> >>> session周りで若干バグ臭い動きもありますが、回避出来ない >> >> >>> レベルでなく、何より敷居の低さ、手軽さが魅力で、軽量なのに >> >> >>> 必要な機能が揃っていると実感しています。 >> >> >>> >> >> >>> 導入の際には日本CodeIgniterユーザ会の発信される情報を >> >> >>> 頼りにさせていただきました。あらためて御礼申し上げます。 >> >> >>> >> >> >>> 今後ともよろしくお願い申し上げます。 >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> 2013年3月19日 18:57 Kenichi Hayashi <kenic****@gmail*****>: >> >> >>>> >> >> >>>> 林です。こんにちは。 >> >> >>>> >> >> >>>> > 要は同じテーブルをleftjoinで複数回参照する場合の書き方ですが、 >> >> >>>> > 何かそのような記述方法というものがあるのででしょうか? >> >> >>>> >> >> >>>> m_staffにそれぞれエイリアスを指定してみてはどうでしょう。 >> >> >>>> >> >> >>>> "m_staff as s1" >> >> >>>> "m_staff as s2" >> >> >>>> "m_staff as s3" >> >> >>>> >> >> >>>> のような感じで。 >> >> >>>> >> >> >>>> -- >> >> >>>> Kenichi Hayashi >> >> >>>> >> >> >>>> _______________________________________________ >> >> >>>> Codeigniter-users mailing list >> >> >>>> Codei****@lists***** >> >> >>>> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> -- >> >> >>> /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ >> >> >>> /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ >> >> >>> >> >> >>> 〒167-0043 東京都杉並区上荻1-16-3 森谷ビル4B >> >> >>> JIN SOFTWARE株式会社 >> >> >>> 代表取締役 齊藤 保 >> >> >>> TEL: 03-6915-1215 FAX: 03-6915-1216 >> >> >>> Mobil: 090-4416-0111 >> >> >>> Mail saito****@jin-s***** WEB http://jin-soft.jp >> >> >>> >> >> >>> /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ >> >> >>> /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ >> >> >>> _______________________________________________ >> >> >>> Codeigniter-users mailing list >> >> >>> Codei****@lists***** >> >> >>> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users >> >> >>> >> >> >>> >> >> >>> >> >> >>> _______________________________________________ >> >> >>> Codeigniter-users mailing list >> >> >>> Codei****@lists***** >> >> >>> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users >> >> >>> >> >> >> >> >> >> >> >> >> >> >> >> -- >> >> >> /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ >> >> >> /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ >> >> >> >> >> >> 〒167-0043 東京都杉並区上荻1-16-3 森谷ビル4B >> >> >> JIN SOFTWARE株式会社 >> >> >> 代表取締役 齊藤 保 >> >> >> TEL: 03-6915-1215 FAX: 03-6915-1216 >> >> >> Mobil: 090-4416-0111 >> >> >> Mail saito****@jin-s***** WEB http://jin-soft.jp >> >> >> >> >> >> /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ >> >> >> /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ >> >> >> >> >> >> _______________________________________________ >> >> >> Codeigniter-users mailing list >> >> >> Codei****@lists***** >> >> >> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users >> >> >> >> >> >> >> >> >> >> >> -- >> >> >> >> >> _______________________________________________ >> >> Codeigniter-users mailing list >> >> Codei****@lists***** >> >> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users >> > >> > >> > _______________________________________________ >> > Codeigniter-users mailing list >> > Codei****@lists***** >> > http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users >> > >> >> _______________________________________________ >> Codeigniter-users mailing list >> Codei****@lists***** >> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users > > > _______________________________________________ > Codeigniter-users mailing list > Codei****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users >