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

Zurück zum Archiv-Index

小島健太郎 kojim****@gmail*****
2013年 3月 21日 (木) 13:02:47 JST


すみません、あとは解決できるつもりでしたが
解決できなかったので再度相談させてください。

同問題で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 メーリングリストの案内
Zurück zum Archiv-Index