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

回答編集履歴

5

追記

2018/06/17 06:49

投稿

退会済みユーザー
answer CHANGED
@@ -41,4 +41,17 @@
41
41
  書き換えたら、ブラウザで問題のページにアクセスし、プログラムを動かして下さい。
42
42
  そうすると、storage/logs/下にlaravel.logが生成されているはずですので、中身を確認して下さい。
43
43
  必要なデータが有り、ちゃんとリレーションが設定できていれば、$employees->first()->deptの結果がログに出力されているはずです。
44
- 私が示したソースのパターン以外にも、色んな値のとり方を試みれば、うまくいかない原因に近づけるかと思います。
44
+ 私が示したソースのパターン以外にも、色んな値のとり方を試みれば、うまくいかない原因に近づけるかと思います。
45
+
46
+ # 追記2
47
+ [https://github.com/dyoshikawa/teratail-131441](https://github.com/dyoshikawa/teratail-131441)
48
+
49
+ サンプルコード書いてみたのでご参考になればと思います。
50
+ 動かす場合は、
51
+
52
+ ```
53
+ php artisan migrate
54
+ php artisan db:seed
55
+ ```
56
+
57
+ を実行した後、サーバー起動してトップページを見て下さい。

4

修正

2018/06/17 06:49

投稿

退会済みユーザー
answer CHANGED
@@ -32,6 +32,7 @@
32
32
  {
33
33
  $employees = Employee::all();
34
34
  logger($employees);
35
+ logger($employees->first());
35
36
  logger($employees->first()->dept);
36
37
  return view('employee.belongsto',compact('employees'));
37
38
  }
@@ -39,5 +40,5 @@
39
40
 
40
41
  書き換えたら、ブラウザで問題のページにアクセスし、プログラムを動かして下さい。
41
42
  そうすると、storage/logs/下にlaravel.logが生成されているはずですので、中身を確認して下さい。
42
- 必要なデータが有り、ちゃんとリレーションが設定できていれば、$employees->deptの結果がログに出力されているはずです。
43
+ 必要なデータが有り、ちゃんとリレーションが設定できていれば、$employees->first()->deptの結果がログに出力されているはずです。
43
44
  私が示したソースのパターン以外にも、色んな値のとり方を試みれば、うまくいかない原因に近づけるかと思います。

3

修正

2018/06/16 15:34

投稿

退会済みユーザー
answer CHANGED
@@ -32,7 +32,7 @@
32
32
  {
33
33
  $employees = Employee::all();
34
34
  logger($employees);
35
- logger($employees->dept);
35
+ logger($employees->first()->dept);
36
36
  return view('employee.belongsto',compact('employees'));
37
37
  }
38
38
  ```

2

追記

2018/06/16 15:33

投稿

退会済みユーザー
answer CHANGED
@@ -20,4 +20,24 @@
20
20
  @endforeach
21
21
  ```
22
22
 
23
- こちらのViewで$employeesに値が入っているか確認してみて下さい。
23
+ こちらのViewで$employeesに値が入っているか確認してみて下さい。
24
+
25
+ # 追記
26
+ Laravelのlogger機能を使ってデバッグしてみて下さい。
27
+ まず、storage/logs/laravel.logを削除して下さい(すでに大量のログがあるはずで、これからのデバッグ結果が見づらいため)。
28
+ 続いて、controllerを次のような感じに書いてみて下さい。
29
+
30
+ ```
31
+ function index()
32
+ {
33
+ $employees = Employee::all();
34
+ logger($employees);
35
+ logger($employees->dept);
36
+ return view('employee.belongsto',compact('employees'));
37
+ }
38
+ ```
39
+
40
+ 書き換えたら、ブラウザで問題のページにアクセスし、プログラムを動かして下さい。
41
+ そうすると、storage/logs/下にlaravel.logが生成されているはずですので、中身を確認して下さい。
42
+ 必要なデータが有り、ちゃんとリレーションが設定できていれば、$employees->deptの結果がログに出力されているはずです。
43
+ 私が示したソースのパターン以外にも、色んな値のとり方を試みれば、うまくいかない原因に近づけるかと思います。

1

修正

2018/06/16 15:31

投稿

退会済みユーザー
answer CHANGED
@@ -1,7 +1,23 @@
1
- `compact` 関数を使わず
1
+ すみません最初の回答誤っていたので忘れて下さい。
2
2
 
3
- ```php
3
+ まず、
4
- return view('employee.belongsto', $employees));
4
+
5
5
  ```
6
+ function index()
7
+ {
8
+ $employees = Employee::all();
9
+ return view('employee.belongsto',compact('employees'));
10
+ }
11
+ ```
6
12
 
13
+ こちらのControllerの段階で$employeesに本当に値が入っているか確認してみて下さい。
14
+ 値が入っていたら、
15
+
16
+ ```
17
+ @foreach($employees as $employee)
18
+ <p>{{ $employee->dept->dept_name }}</p>
19
+ <p>{{ $employee->name }}</p>
7
- としても同じ結果でしょうか?
20
+ @endforeach
21
+ ```
22
+
23
+ こちらのViewで$employeesに値が入っているか確認してみて下さい。