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

Back to archive index

tsuji kuni kunit****@gmail*****
2013年 3月 21日 (木) 15:32:09 JST


こんにちは。
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
> >>
>
>
>
> --
>
> ***********************************************
>        医療法人栄和会泉川病院
>        医療情報部 情報システム課
>        小島 健太郎
>        E-mail:kojim****@gmail*****
>        Tel:0957-72-2017
> ***********************************************
>
> _______________________________________________
> Codeigniter-users mailing list
> Codei****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
Descargar 



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