0
我想創建一個簡單的活動飼料,用戶可以看到他的朋友的更新。Laravel雄辯活動飼料
我處理三個表。 user_status,友誼和用戶。
用戶表
user_id
name
email
..(a regular users table, nothing special)
友誼表
friendship_id
friend_one (Foreign key from users table)
friend_two (Foreign key from users table)
user_status表
status_id
user_id (foreign key from users table)
status
date
MODELS
用戶模型
public function friends() {
return $this->belongsToMany('App\Models\User', 'friendship', 'friend_one', 'friend_two');
}
public function status() {
return $this->hasMany('\App\Models\UserStatus','status_id');
}
UserStatus模型
public function usersStatus() {
return $this->belongsTo('\App\Models\User','user_id');
}
FeedController.php
class FeedController extends Controller
{
public function index() {
$friends = Auth::user()->friends;
return view('frontend.feed.index')
->with('friends',$friends);
}
}
使用下面的查詢,我可以得到一個用戶的好友。我也可以輕鬆獲得特定用戶的狀態更新,但我不知道如何僅列出特定用戶的狀態。
@foreach($friends as $friend)
{{$friend->email}}
@endforeach
下面的一個不起作用。
查看
@foreach($friends as $friend)
@foreach($friend->status as $status)
{{$status->status}}
@endforeach
@endforeach
Invalid argument supplied for foreach() (View: /Applications/MAMP/htdocs/master/resources/views/frontend/feed/index.blade.php)
它不起作用,我得到相同的錯誤。請問爲什麼在關係中有兩個user_id? – salep
既然你不使用默認的id,你將不得不重寫你的local_key和foreign_key引用格式 $這個 - >的hasMany(「應用程序\型號\ UserStatus,‘foreign_key’,‘local_key’)。現在因爲你的foreign_key和local_key都是user_id。 http://laravel.com/docs/5.1/eloquent-relationships#one-to-many –
還有,爲什麼你在你的UserStatus模式usersStatus()方法。它應該是user()。 –