[Codeigniter-users] 1つのマスタをleftjoinで複数回参照

Back to archive index

戸田 広 info****@sciss*****
2013年 3月 20日 (水) 15:27:08 JST


こんにちは、戸田です。

> 弊社では、上記の記述を見て分かる通り、アクティブレコードを
> 使用するのと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

-------------- next part --------------
HTMLの添付ファイルを保管しました...
下載 



Codeigniter-users メーリングリストの案内
Back to archive index