Mysql
 sql >> Base de données >  >> RDS >> Mysql

Laravel requête éloquente bonnes données

Si vous souhaitez utiliser eloquent, vous devez d'abord définir une relation. Un message appartient à un fil et à un utilisateur. Voici comment définir les relations :Dans le modèle de message :

public function user()
{
   return $this->belongsTo('App/User'); //User model
}

public function thread()
{
  return $this->belongsTo('App/Thread'); //Thread model
}

Pour définir l'inverse, procédez comme suit :Modèle utilisateur interne :

public function threads()
{
  return $this->hasMany('App/Thread');
}

À l'intérieur du modèle Thread :

public function messages()
{
   return $this->hasMany('App/Message');
}

Vous pouvez maintenant effectuer les opérations suivantes dans votre contrôleur :

$threads = Auth::user()->threads;

Vous avez maintenant tous les fils de discussion de l'utilisateur actuellement connecté. Je ne sais pas si j'ai bien compris la question, alors posez la question.

Edit :Vous pouvez vérifier comme suit :

$thread = Thread::find($id);
$isCurrentUserThread = false;
foreach(Auth::user()->threads as $currentUserThread) {
   if($currentUserThread->id == $thread->id) {
       $isCurrentUserThread = true;
      //$thread belongs to the current user
   }
}

if($isCurrentUserThread) {
    //the thread belongs to the current user
} else {
   //it doesn't belong to the current user
}