2017-10-11 10 views
0

Je veux convertir la requête ci-dessous mysql pour db_select dans drupal 7.comment convertir mysql requête de jointure de Drupal 7 db_select rejoindre requête

  SELECT ws.sid, u.name AS username, r.name AS role, 
     DATE_FORMAT(FROM_UNIXTIME(u.created), '%d-%m-%Y') AS 'created', 
     DATE_FORMAT(FROM_UNIXTIME(u.login), '%d-%m-%Y') AS 'last_login', 
     DATE_FORMAT(FROM_UNIXTIME(u.access), '%d-%m-%Y') AS 'last_accessed' 
     FROM users u 
     INNER JOIN users_roles ur ON ur.uid = u.uid 
     INNER JOIN role r ON r.rid = ur.rid 
     INNER JOIN webform_submissions ws ON ws.uid = u.uid 
     WHERE u.login <= UNIX_TIMESTAMP((NOW() - INTERVAL 1 YEAR)) AND r.name IN ('elev', 'lærer') 
     ORDER BY last_login ASC 


    Can anyone please suggest how to write it? 
+1

Vous pouvez utiliser db_query au lieu de db_select – Wis

+0

pouvez-vous s'il vous plaît laissez-moi savoir comment convertir cette requête db_query? – user1755949

+0

Qu'avez-vous déjà essayé? La base de données drupal api est documentée [ICI] (https://www.drupal.org/docs/7/api/database-api/database-api-overview) – 2pha

Répondre

1

Utilisez db_query

db_query("Your query here")->fetchAll(); //output as objects 
db_query("Your query here")->fetchAll(PDO::FETCH_ASSOC); //output as arrays 

Pour votre requête SQL.

db_query("SELECT ws.sid, u.name AS username, r.name AS role, 
     DATE_FORMAT(FROM_UNIXTIME(u.created), '%d-%m-%Y') AS 'created', 
     DATE_FORMAT(FROM_UNIXTIME(u.login), '%d-%m-%Y') AS 'last_login', 
     DATE_FORMAT(FROM_UNIXTIME(u.access), '%d-%m-%Y') AS 'last_accessed' 
     FROM users u 
     INNER JOIN users_roles ur ON ur.uid = u.uid 
     INNER JOIN role r ON r.rid = ur.rid 
     INNER JOIN webform_submissions ws ON ws.uid = u.uid 
     WHERE u.login <= UNIX_TIMESTAMP((NOW() - INTERVAL 1 YEAR)) AND r.name IN ('elev', 'lærer') 
     ORDER BY last_login ASC")->fetchAll(PDO::FETCH_ASSOC); 
+0

pouvons-nous écrire cette requête dans db_select car je ne veux pas passer une requête mysql brute? – user1755949

1

Ici, vous allez

$query = db_query("SELECT ws.sid, u.name AS username, r.name AS role, DATE_FORMAT(FROM_UNIXTIME(u.created), '%d-%m-%Y') AS 'created', DATE_FORMAT(FROM_UNIXTIME(u.login), '%d-%m-%Y') AS 'last_login', DATE_FORMAT(FROM_UNIXTIME(u.access), '%d-%m-%Y') AS 'last_accessed' 
    FROM users u 
    INNER JOIN users_roles ur ON ur.uid = u.uid 
    INNER JOIN role r ON r.rid = ur.rid 
    INNER JOIN webform_submissions ws ON ws.uid = u.uid 
    WHERE u.login <= UNIX_TIMESTAMP((NOW() - INTERVAL 1 YEAR)) AND r.name IN ('elev', 'lærer') 
    ORDER BY last_login ASC")->fetchAll(PDO::FETCH_ASSOC); 

echo "<pre>";print_r($query);exit; //to check the result