2016-04-17 25 views
0

所以,我寫在標題我需要得到誰,發佈您的管理員用戶文章所有用戶的所有用戶... 所以我寫:Laravel查詢 - 讓誰上admin用戶的文章,發佈您的

public function userbase() 
{ 
    return Offer::select('users.*') 
       ->where('users.admin', 9) 
       ->join('articles','articles.id','=','offers.article_id') 
       ->join('users','users.id','=','articles.user_id') 
       ->where('articles.user_id', Auth::user()->id) 
       ->orderBy('offers.created_at', 'desc') 
       ->groupBy('users.id') 
       ->get(); 
} 

但我得到的只是[](這是不是真的)......

我也嘗試:

public function userbase() 
{ 
    $user_ids = Article::where('user_id', Auth::id()) 
       ->join('offers')->on('offers.article_id', '=', 'articles.id') 
       ->join('users')->on('offers.user_id', '=', 'users.id') 
       ->select('users.id') 
       ->distinct() 
       ->get(); 

    $users = User::whereIn('id', $user_ids); 
    return $users; 
} 

,但我得到: 缺少參數2照亮\數據庫\查詢\生成器::加盟()

  • 嘗試是:

    公共職能的用戶羣(){$文章=驗證::用戶() - >(篇) - >獲得();的foreach(如$ $條文章){

    $offers = Offer::where('article_id', $article['id'])->orderBy('created_at', 'desc')->get(); 
    
    } 
    

    的foreach($報價爲$報價){

    $users = User::where('id', $offer['user_id'])->orderBy('created_at', 'desc')->get(); 
    
    } 
    
    return $users; 
    

    } 但offcource不工作...

  • 現在我真的不知道接下來做什麼...請幫助...

    也我的模型: 文章:

    public function offers() { 
        return $this->hasMany('App\Offer'); 
    } 
    

    優惠:

    public function user() { 
        return $this->belongsTo('App\User'); 
    } 
    
    public function article() { 
        return $this->belongsTo('App\Article'); 
    } 
    

    所以,我怎麼能得到誰,發佈您的其他用戶(管理員)文章的用戶...

    回答

    0

    嘗試把這個功能在用戶模式:

    public function scopeBase($query){ 
        $sql = <<<SQL 
    id IN(
        SELECT DISTINCT users.id FROM articles 
        INNER JOIN offers 
         ON articles.id=offers.article_id 
        INNER JOIN users 
         ON users.id=articles.user_id 
        WHERE articles.user_id=? AND users.admin=? 
    ) 
    SQL; 
    
        return $query->whereRaw($sql, [$this->id, 9]); 
    } 
    

    然後在控制器中讓用戶使用這個語法:

    class MyController extends Controller{ 
        public function example(){ 
         $users = User::base()->get(); 
         //.... 
        } 
    
    } 
    

    但是,如果您更好地解釋表結構,您將不勝感激。

    +0

    我只是:[] ...也有語法錯誤返回$ query-> whereRaw($ sql,[$ this-> id,9]); – Andrew

    +0

    正確修正語法 –

    +0

    :[] ... – Andrew

    -1

    你試過這個嗎?

    foreach (User::all() as $user) { 
    foreach ($user->offers as $offer) { 
         if ($offer->article->user->isAdmin()) 
          $select[] = $user; 
        } 
    } 
    
    相關問題