2016-04-19 7 views
0

übersetzen Ich möchte einige SQL-Anweisung in DQL jede Hilfe übersetzen? Ich habe BenutzereinheitIch möchte SQL in DQL

-------user-------- 
    id 
    username 
    email 
    password 
    ... 
-------------------- 

und ein Freund Einheit wich haben 2 Attribut friend_one und friend_two die entleihenden Referenz

------friend---- 

    id 
    friend_one 
    friend_two 
    statu 

-------------- 

so meine SQL-Anweisung sind

UPDATE friend 
SET status="1" 
WHERE 
(friend_one="$user_id" OR friend_two="$user_id") 
AND 
(friend_one="$friend_id" OR friend_two="$friend_id") 

SELECT 'friend_one','friend_two','status' FROM friend 
WHERE 
(friend_one="$user_id" OR friend_two="$user_id") 
AND 
(friend_one="$friend_id" OR friend_two="$friend_id") 

SELECT F.statu, U.username, U.id 
FROM user U, friend F 
WHERE 
CASE 
WHEN F.friend_one = '$user_id' 
THEN F.friend_two = U.user_id 
WHEN F.friend_two= '$user_id' 
THEN F.friend_one= U.user_id 
END 
AND 
F.statu='1' 

jede Hilfe bitte:/

Antwort

0

Gut, aber haben Sie wirklich etwas bisher versucht? Es wäre großartig, wenn Sie Ihren aktuellen Code in die Frage aufnehmen würden.

Ich würde Sie so etwas wie diese Abfragen vorschlagen unten: (Disclaimer: Bitte beachten sie ganz roh sind und wurden nicht getestet)

/* For update */ 
$result = $db->executeUpdate('UPDATE friend AS f SET f.status = "1" WHERE (f.friend_one = ? OR f.friend_one = ?) AND (f.friend_one = ? OR f.friend_two = ?)', 
      array($user_id, $user_id, $friend_id, $friend_id), 
      array(\PDO::PARAM_INT, \PDO::PARAM_INT, \PDO::PARAM_INT, \PDO::PARAM_INT) 
      ); 


/* For first select */ 
$stmt = $db->executeQuery('SELECT f.friend_one, f.friend_two, f.status from friend AS f 
      WHERE (f.friend_one = ? OR f.friend_one = ?) AND (f.friend_one = ? OR f.friend_two = ?)', 
      array($user_id, $user_id, $friend_id, $friend_id), 
      array(\PDO::PARAM_INT, \PDO::PARAM_INT, \PDO::PARAM_INT, \PDO::PARAM_INT) 
      ); 

$result = $stmt->fetchAll(); 


/* For second select */  
$stmt = $db->executeQuery('SELECT f.status, u.username, u.id from friend AS f 
     INNER JOIN user as u ON u.user_id = 
     CASE WHEN f.friend_one = ? THEN f.friend_two WHEN f.friend_two = ? THEN f.friend_one END 
     AND f.status = "1"', 
     array($user_id, $user_id), 
     array(\PDO::PARAM_INT, \PDO::PARAM_INT) 
     ); 

$result = $stmt->fetchAll(); 
0

Hier die doctrine query Builder ist.

+0

Während dies die Frage theoretisch beantworten könnte, [wäre es vorzuziehen] (// meta.stackoverflow.com/q/8259), die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. – Raju