teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

途中送信していたものを編集

2016/05/14 03:45

投稿

knf
knf

スコア13

title CHANGED
@@ -1,1 +1,1 @@
1
- 途中送信してしまいました。無視してください。cakephpのfindで出てくる配列の形について
1
+ cakephpのfindで出てくる配列の形について
body CHANGED
@@ -1,7 +1,8 @@
1
1
  CakePHPで小規模なサイトを作っているプログラミング経験1年程度の初心者です。
2
2
  バージョンはCakePHP2.8だと思います。
3
3
 
4
- Modelのfind関数で出てくる配列ですが、ViewにおいてElementsを使いまわそうとするとその形式に悩まされています。
4
+ Modelのfind関数で出てくる配列ですが、ViewにおいてElementを使いまわそうとするとその形式に悩まされています。
5
+ 仕様だからしょうがないのかもしれないですが、なにかいい解決方法を知っている、思いついた方がいたら教えてください。
5
6
 
6
7
  例えば1つのレシピが複数の材料と関連があるといったモデルで、レシピを検索すると、次のような配列が出てくると思います。
7
8
  Array
@@ -37,4 +38,60 @@
37
38
  (
38
39
  (以下略)
39
40
 
41
+ しかし、ユーザー等の関連モデルからレシピを検索すると、
42
+ Array
43
+ (
44
+ [0] => Array
45
+ (
46
+ [User] => Array
47
+ (
48
+ [id] => 1
49
+ [data] => ユーザー1
50
+ )
51
+ [Recipe] => Array
52
+ (
53
+ [0] => Array
54
+ (
55
+ [id] => 1
56
+ [data] => 野菜炒め
57
+ [Ingredient] => Array
58
+ (
59
+ [0] => Array
60
+ (
61
+ [id] => 1
62
+ [data] => 肉
63
+ )
64
+ [1] => Array
65
+ (
66
+ [id] => 2
67
+ [data] => キャベツ
68
+ )
69
+ )
70
+ [1] => Array
71
+ (
72
+ [id] => 2
73
+ [data] => 味噌汁
74
+ [Ingredient] => Array
75
+ (以下略)
76
+ と細かいところはアレですがこんな感じになると思います。
77
+
78
+ それぞれの配列を用いてレシピ一覧と関連レシピつきユーザー一覧のページを作りたいと思ったとき、レシピ部分は共通のデザインなので「recipe.ctp」みたいにElementにまとめたいと思いました。
79
+ そうすると問題になるのがRecipe部分の配列の形式で、それぞれ
80
+
81
+ foreach($data as $data2){
82
+ echo $this->element('recipe',array('recipe' => $data2));
83
+ }
84
+
85
+ -----------------------------
86
+
87
+ foreach($data as $data2){
88
+ foreach($data2['Recipe'] as $data3)
89
+ echo $this->element('recipe',array('recipe' => $data3));
90
+ }
91
+ }
92
+
40
- 一方、複数ユーザーが複数レシピを持っているといった場合に(HABTM)、材料で含めて検索ると、
93
+ という感じ「recipe.ctp」に配列を渡すとそ中で$recipe形式が違ってきてしまいます
94
+ Elementなんか使わずにそれぞれのパターンでCTPファイルに書き込めばいいかもしれないですが、それでは保守性が犠牲になるので避けたいです。
95
+ findしたあとコントローラーで同じ形式になるようforeachで加工するのも考えましたが、他のモデルでも同様の問題が発生しているので同じようなコードを書くのも気が引けます。
96
+
97
+ ちょっと丸投げになっている気もしなくもないですが、何か一箇所にコードを追加、変更するだけで全体が解決するようないい方法を思いついた方がいましたら、ぜひ教えてください。

3

途中送信

2016/05/14 03:45

投稿

knf
knf

スコア13

title CHANGED
File without changes
body CHANGED
@@ -37,25 +37,4 @@
37
37
  (
38
38
  (以下略)
39
39
 
40
- 一方で、複数のユーザーが複数のレシピを持っているといった場合に(HABTM)、材料まで含めて検索すると、
40
+ 一方で、複数のユーザーが複数のレシピを持っているといった場合に(HABTM)、材料まで含めて検索すると、
41
-
42
- Array
43
- (
44
- [0] => Array
45
- (
46
- [id] => 1
47
- [data] => 2016A前期
48
- [Recipe] => Array
49
- (
50
-
51
-
52
-
53
-
54
- Array
55
- (
56
- [0] => Array
57
- (
58
- [id] => 1
59
- [data] => 2016A前期
60
- [Post] => Array
61
- (

2

途中送信

2016/05/14 02:59

投稿

knf
knf

スコア13

title CHANGED
@@ -1,1 +1,1 @@
1
- cakephpのfindで出てくる配列の形について
1
+ 途中送信してしまいました。無視してください。cakephpのfindで出てくる配列の形について
body CHANGED
File without changes

1

途中送信

2016/05/14 02:58

投稿

knf
knf

スコア13

title CHANGED
File without changes
body CHANGED
@@ -58,82 +58,4 @@
58
58
  [id] => 1
59
59
  [data] => 2016A前期
60
60
  [Post] => Array
61
- (
61
+ (
62
- [0] => Array
63
- (
64
- [id] => 101
65
- [thread_no] => 1
66
- [response_no] => 1
67
- [user_id] => 3
68
- [lecture_id] => 12
69
- [type] => info
70
- [title] => テスト
71
- [text] => 本ブーン
72
- [image] =>
73
- [created] => 2016-05-10 14:57:31
74
- [modified] => 2016-05-10 14:57:31
75
- [deleted] =>
76
- [User] => Array
77
- (
78
- [nickname] => ID3ユーザー
79
- [id] => 3
80
- )
81
-
82
- [good] => 1
83
- )
84
-
85
- )
86
-
87
- [memo] =>
88
- [users_lecture_id] => 27
89
- )
90
-
91
- [1] => Array
92
- (
93
- [id] => 11
94
- [term] => 2016A前期
95
- [subid] =>
96
- [name] => 新たなる授業< " ' \ >あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほ
97
- [day] => monday1
98
- [type] => 全共 自然群
99
- [lecturer] => AN,Lin,FLORES Giancarlo,KHAYYER Abbas,KIM Chul-Woo,KIM,SUNMIN,PIPATPONGSA, Thirapong,QURESHI,Ali Gul,SCHMOCKER,Jan-Dirk
100
- [former_lecture_id] =>
101
- [data_id] => lecture_11111
102
- [data_url] => http://www.z.k.kyoto-u.ac.jp/zenkyo/syllabus/syllabus-detail?condition[page]=9&page=13
103
- [textbook] => あいう社「かきく」
104
- [ad] => add_data
105
- [classroom] => 共南11
106
- [record] => 成績評価はテストのみ!
107
- [created] => 0000-00-00 00:00:00
108
- [modified] =>
109
- [deleted] =>
110
- [Post] => Array
111
- (
112
- [0] => Array
113
- (
114
- [id] => 79
115
- [thread_no] => 1
116
- [response_no] => 1
117
- [user_id] => 3
118
- [lecture_id] => 11
119
- [type] => info
120
- [title] => テスト
121
- [text] =>
122
- [image] =>
123
- [created] => 2016-04-18 18:27:53
124
- [modified] => 2016-04-18 18:27:53
125
- [deleted] =>
126
- [User] => Array
127
- (
128
- [nickname] => ID3ユーザー
129
- [id] => 3
130
- )
131
-
132
- [good] =>
133
- )
134
-
135
- )
136
-
137
- [memo] =>
138
- [users_lecture_id] => 29
139
- )