2017-05-01 1 views
0

J'essaie d'obtenir le nombre de messages de l'utilisateur connecté count il montre par exemple l'utilisateur connecté combien de message ou un commentaire, ils ont publié jusqu'à présent:hasMany Eloquent relation dans Laravel 5.4

Ce que j'ai à ce jour est author_id colonne dans le tableau posts qui fera référence à l'ID utilisateur

posts table image

Ceci est mon modèle Post:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Post extends Model 
{ 


    public function author() { 

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

} 

et ceci est mon modèle 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'); 
    } 


} 

Ceci est mon 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) 
    { 
     // 
    } 
} 

Tout le monde sait ce qui est mon erreur et comment y remédier?

+0

BTW ce que vous obtenez dans '$ countTodayOrder'? – imrealashu

+0

Messages publiés ce jour-là. –

Répondre

0

Eh bien je figure it out :)

i ignoré tous les rôles de modèle et directement contrôleur utilisé les données insérées à partir de la base de données et le comparer avec l'ID utilisateur s'il est vrai (même) retourne le nombre.

ici est le code pour vous si vous en avez besoin 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')); 
    }