2016-04-20 12 views
0

Ich bin neu in Kuchen php.I wollen Abfrage zwischen zwei schreiben beitreten table.Here meine Frage ist:cakephp Join-Abfrage nicht funktioniert

select * from deal_purchases as dp 
    join users as u on u.id = dp.user_id 
    where dp.deal_id = 6 
    group by user_id 

und diese Abfrage ausführen perfect.But Ich möchte, dies schreiben Abfrage in CakePHP. Ich habe diese Abfrage wie geschrieben:

$table = "deal_purchases"; 
$query['conditions'] = array('deal_purchases.deal_id'=>$deal_id); 
$query['fields'] = array('deal_purchases.*','users.*'); 
$query['joins'] = array(
        array(
         'table'=>'users', 
         'alias'=>'users', 
         'type'=>'INNER', 
         'conditions'=>array('users.id = deal_purchases.user_id') 
         ), 
       ); 
$query['group'] = array('deal_purchases.user_id'); 
$result = $this->find('all', $query); 

Hier ist diese Abfrage nicht so ausführen, wie kann ich dieses Problem lösen?

+0

Ich weiß, kann, die CakePHP-Version mit und wo Sie die Abfrage wollen (zB Controller Name oder Modellname) –

+0

@MathsRkBala Ich habe CakePHP (tm) v Version 0.2.9. Und ich habe Abfrage in Controller geschrieben. –

+0

Kann ich Ihren Controller-Namen kennen (DealPurchasesController oder einen anderen Namen) –

Antwort

0

Bitte überprüfen Sie die folgenden Dateien:

Ihr Controller top "$uses" Array enthalten "DealPurchase" Beispiel

class MerchantController extends AppController { 
    var $uses = array(
     'DealPurchase' 
    ); 

Versuchen Sie, die folgende

$query['conditions'] = array('DealPurchase.deal_id'=>$deal_id); 
$query['fields'] = array('DealPurchase.*','User.*'); 
$query['joins'] = array(
        array(
         'table'=>'users', 
         'alias'=>'User', 
         'type'=>'INNER', 
         'conditions'=>array('User.id = DealPurchase.user_id') 
         ), 
       ); 
$query['group'] = array('DealPurchase.user_id'); 
$result = $this->DealPurchase->find('all', $query); 

Datenbanktabelle deal_purchases Für Modellname solltelautenin folgendem Format

<?php 
class DealPurchase extends AppModel { 
    var $name = "DealPurchase"; 
    //Relationship some tables 
    //Validation here 
} 
?> 

User.php Model (Benutzer)

class User extends AppModel { 
    var $name = "User"; 
    var $hasMany = array(
     'DealPurchase' => array(
      'className' => 'DealPurchase', 
      'foreignKey' => 'user_id', 
      'dependent' => true //true means when delete the user entry via coding then also deleted the deal_purchases entry also 
     ) 
    ); 
    //validation 
} 

DealPurchase.php Model (deal_purchases)

class DealPurchase extends AppModel { 
    var $name = "DealPurchase"; 
    var $belongsTo = array(
     'User' => array(
      'className' => 'User', 
      'foreignKey' => 'user_id' 
     ) 
    ); 
    //validation 
} 
+0

Was ist die Bedeutung von var $ uses = array ( 'DealPurchase' ); –

+0

Fügen Sie das Modell (DealPurchase) in Ihren Controller ein. Sie können auf die Daten in der Tabelle (deal_purchases) in Ihrem (Merchant Controller) zugreifen. Der Name des deal_purchases-Modells sollte DealPurchase.php sein –

+0

Wie schreibt man die Beziehung der Tabelle in die Modelldatei? –

Verwandte Themen