2017-05-01 178 views
0

我试图让登录的用户的帖子数量count所以它显示了登录的用户,例如他们有多少的信息或评论至今出版:的hasMany雄辩关系5.4

我至今是author_id列在posts表将参考用户ID

posts table image

这是我Post型号:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Post extends Model 
{ 


    public function author() { 

     return $this->belongsTo('App\User'); 
    } 

} 

这是我User型号:

<?php 

namespace App; 

use Illuminate\Notifications\Notifiable; 
use Illuminate\Foundation\Auth\User as Authenticatable; 

class User extends Authenticatable 
{ 
    use Notifiable; 

    protected $table = 'users'; 

    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = [ 
     'role_id', 
     'email', 
     'password', 
     'name', 
     'avatar', 
     'remember_token', 
     'created_at', 
     'updated_at' 
    ]; 

    /** 
    * The attributes that should be hidden for arrays. 
    * 
    * @var array 
    */ 
    protected $hidden = [ 
     'password', 'remember_token', 
    ]; 


    public function posts() 
    { 
     return $this->hasMany('Post', 'author_id'); 
    } 


} 

这是我PostController

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\Post; 
use App\Auth; 
use App\User; 

class PostController extends Controller 
{ 
    /** 
    * Display a listing of the resource. 
    * 
    * @return \Illuminate\Http\Response 
    */ 
    public function index() 
    { 
     $posts = Post::orderBy('created_at', 'desc')->paginate(15); 
     $countTodayOrders = Post::whereRaw('Date(created_at) = CURDATE()')->count(); 

     return view('theme.index', compact('posts', 'countTodayOrders')); 
    } 

    /** 
    * Show the form for creating a new resource. 
    * 
    * @return \Illuminate\Http\Response 
    */ 
    public function single($slug) { 
     $post = Post::where('slug', '=', $slug)->first(); 
     $countTodayOrders = Post::whereRaw('Date(created_at) = CURDATE()')->count(); 
     return view('theme.single', compact('post', 'countTodayOrders')); 
    } 

    /** 
    * Store a newly created resource in storage. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @return \Illuminate\Http\Response 
    */ 
    public function store(Request $request) 
    { 
     // 
    } 
} 

任何人都知道什么是我的错误,以及如何解决它?

+0

顺便说一句你在'$ countTodayOrder'会得到些什么? – imrealashu

+0

那天发布的帖子。 –

回答

0

嗯,我看着办吧:)

我忽略所有的模型角色,直接从数据库所使用的控制器插入数据,如果它是真实的(相同)将其与用户ID与返回的数量。

这里是代码为你,如果你需要它PostController

public function index() 
    { 
     $posts = Post::orderBy('created_at', 'desc')->paginate(15); 
     $countTodayOrders = Post::whereRaw('Date(created_at) = CURDATE()')->count(); 
     $postscount = DB::table('posts') 
      ->whereExists(function ($query) { 
       $query->select(DB::raw(1)) 
         ->from('users') 
         ->whereRaw('author_id = id'); 
      }) 
      ->get(); 

     return view('theme.index', compact('posts', 'countTodayOrders', 'postscount')); 
    }