2012-11-15 2 views
0

Je me suis heurté à un problème que je n'ai jamais connu avec fuelphp.Fuelphp Limite liée à l'ORM ignorée

Sur la page de profil des utilisateurs, j'autorise les autres utilisateurs à laisser un commentaire. Et quand j'utilise related comments limit dans ma fonction de contrôleur il est simplement ignoré.

code

public function action_view($id) 
    { 

     $user = Model_User::find($id, array(
       'related' => array(
        'comments' => array(
         'order_by' => array(
          array('id', 'DESC'), 
         ), 
        ), 
       ), 
       'limit' => 5, 
      )); 

     if(empty($user)): 
      Response::redirect(Uri::base() . "welcome/404"); 
     endif; 

     $this->template->title = $user->username . "'s Profile | " . Config::get('site_name'); 
     $this->template->content = View::forge('user/profile', array('user' => $user)); 
    } 

Les order_by fonctionne comme un charme, mais ne marche pas limite, il énumère encore tous les commentaires. Essayé plusieurs variantes ont beaucoup d'erreurs étranges différentes.

+0

Pouvez-vous activer "Profilage" de config che? Donc, vous pouvez voir la requête entière créée et nous pouvons l'analyser. –

Répondre

1

EDIT: J'ai trouvé cette partie de la documentation, il devrait vous aider: troubleshooting

Essayez de mettre la « limite » dans le tableau des propriétés: dans la position actuelle de la limite « limite » la nombre d'utilisateurs, mais vous récupérez un seul utilisateur pour que cela ne fonctionne pas.

Essayez avec ceci:

$user = Model_User::find($id, array(
    'related' => array(
     'comments' => array(
      'order_by' => array(
       array('id', 'DESC'), 
      ), 
      'limit' => 5, 
     ), 
    ), 
)); 
+0

merci beaucoup pour votre réponse, oui j'ai essayé celui-là aussi, il ignore la limite, order_by est bien mais la limite est ignorée – Side

+0

essayez avec "rows_limit" au lieu de "limite", comme il a été descendu dans le lien sur le première ligne –

+0

croyez-le ou non je l'ai essayé aussi, c'est ignoré non plus, j'ai totalement perdu la ligne maintenant avec ce – Side

0

Le problème ici est que cette requête exécute une découverte en valeur. Ce type de recherche exécute un get_one() et est toujours limité à 1.

Donc, votre limite n'est pas ignorée, elle est remplacée par le fait que vous utilisez ce type de find().

Pour faire ce que vous voulez:

$user = Model_User::query() 
    ->where('id', '=', $id) 
    ->related('comments') 
    ->order_by('comments.id', 'DESC') 
    ->rows_limit(5) 
    ->get();