如何使用範圍的方法從另一個(UserSubscriber)獲得從一個模型(用戶)集合?模型是一對一的關係。
更多:
我有兩個模型相關的一對之一:
第二種模式是隻針對部分用戶已經延長,具體的角色(用戶在這種情況下)
用戶模式:
class User extends \Sentinel\Models\User
{
public function subscriber()
{
return $this->hasOne('App\Models\UserSubscriber', 'user_id');
}
}
UserExtended型號:
class UserSubscriber extends Model
{
public function user()
{
return $this->belongsTo('App\Models\User', 'user_id');
}
public function scopeLangSubscribers($query, $langCode)
{
$query->where('languages_subscribed', 'LIKE', '%' . $langCode . '%');
}
}
我們的目標是:
獲取使用範圍從UserSubscriber用戶的集合。
(無需重寫此範圍內的方法來用戶模型。)
當我堅持:
$users = User::with(['subscriber' => function ($query) use ($lang) {
$query->langSubscribers($lang);
}])->get();
這將返回我的所有用戶的集合設置爲空一些「用戶」其中。
我試圖對其進行過濾,但:
這可能不是最好的解決方案,因爲它檢索所有的人都從DB
$users = $users->filter(function($item) { return $item->subscriber != null; });
迭代後對用戶的整個大集合
'用戶' 是不是列,所以我不能做:
->whereNotNull('subscriber')
我該如何做到這一點?
編輯:
或者,也許有一個集合(用戶)轉換爲另一種(用戶)第一afterretrieving這種方式,它可以做得非常aesy和清潔:
$usersSubscribers = UserSubscriber::langSubscribers($lang)->get();
我不確定你想要完成什麼。爲什麼用戶只有一個用戶?當然,用戶應該有很多用戶? –
用戶「有一個」用戶意味着:該用戶是用戶。由於不是每個用戶都是訂戶,因此這些附加信息存儲在附加表中。 –