PHPixie рдХреЗ рд▓рд┐рдП рдирдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЙрдбреНрдпреВрд▓ рдкреВрд░рд╛ рд╣реБрдЖ

рдЫрд╡рд┐
рдЖрдЬ рдореИрдВрдиреЗ PHPixie рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдПрдХреНрд╕реЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг 3.0 рдХреЗ рд▓рд┐рдП рдирд╡реАрдирддрдо рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрд╛ рд╣реИред рдЬрдм рдореИрдВрдиреЗ рд╢реБрд░реБрдЖрдд рдХреА рдереА, рддреЛ рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╣реА рд╣рдлреНрддреЗ рд▓рдЧреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рднрд╛рд░реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдФрд░ рдкреБрдирд░реНрд▓реЗрдЦрди рдХреЗ рдХрд╛рд░рдг рд▓рдЧрднрдЧ 2 рдорд╣реАрдиреЗ рддрдХ рдЪрд▓рд╛ред рд▓реЗрдХрд┐рди рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдмрд╛рд╣рд░ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд, рдпрджрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдврд╛рдВрдЪреЗ рдпрд╛ рд╕реАрдПрдордПрд╕ рдкрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЖрдк рдЕрдкрдиреА рдкрд╕рдВрджреАрджрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЕрдкрдиреЗ рд╕рд╛рде рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ)ред

рдУрдЖрд░рдПрдо рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдирдП рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВ рдПрдХ рд░рд┐рд▓реАрдЬ рдХрд░реВрдВрдЧрд╛ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЬреАрдердм рдкрд░ 3.0 рд╢рд╛рдЦрд╛ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдкрдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкреНрд░рд▓реЗрдЦрди рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдУрдЖрд░рдПрдо рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛)ред рдЕрдм рдирдП рдлреАрдЪрд░реНрд╕ рдкрд░ рдирдЬрд░ рдбрд╛рд▓рддреЗ рд╣реИрдВред

рдФрд╕рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣рд╛рдВ MongoDB рдХреЗ рд▓рд┐рдП рддрд╛рд░реНрдХрд┐рдХ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдиреНрдирдд рдХреНрд╡реЗрд░реА рд╕рдорд░реНрдерди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рд╣реИрдВ, рддреЛ рдпрд╣рд╛рдВ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: тАЬ (A рдпрд╛ B) OR (C) рдФрд░ (D рдпрд╛ E) рдЬреИрд╕реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп MongoDB рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред )) ", рддрд╛рдХрд┐ PHPixie рд╕реНрд╡рдпрдВ рдРрд╕реЗ рд░реВрдкреЛрдВ рдореЗрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░реЗрдЧрд╛ рдЬреЛ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдХрдИ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЧрдП рд╣реИрдВ:
$query ->where('name', 'Trixie') ->or_where('name', 'Tinkerbell') ->where_not('id', '>', 7) ->having('count','<', 5) ->or_having('count', 7); // : $query ->where('name', 'Trixie') ->_or('name', 'Tinkerbell') ->_and_not('id', '>', 7) ->having('count', '<', 5) ->_or('count', 7); //   _or      //(     'where'    'having') 


рдиреЗрд╕реНрдЯреЗрдб рд▓реЙрдЬрд┐рдХ рдХреЗ рдХрдИ рджреГрд╖реНрдЯрд┐рдХреЛрдг:
 $query ->where('name','Trixie') ->_or(function($builder){ $builder ->_and('id',7) ->_or('id',5) }); //WHERE name = 'Trixie' OR ( id = 7 OR id = 5 ) //      //(     ,   EXT JS ) $query->where('name','Trixie'); $query ->start_where_group('or') ->_and('id',7) ->_or('id',5) ->end_where_group(); 


рдХреЙрд▓рдо рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдСрдкрд░реЗрдЯрд░:
 $query->where('fairies.id','*=','pixies.id'); 


рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде SQL рдХреЛрдб рдЖрд╡реЗрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛:
 $expr = $this->db->expr('concat(name, ?)', array('test')); $query->where($expr, 'Trixietest'); //WHERE concat(name, ?) = 'Trixietest'; 


NULL рдорд╛рди рджреНрд╡рд╛рд░рд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬреЗрдВ, рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдпрд╣ рдЬрд╛рдиреЗ рдмрд┐рдирд╛ рдХрд┐ рдпрд╣ NULL рд╣реИ:
 $category_id = null; $query->where('category_id', $category_id); // WHERE category_id IS NULL //  WHERE category_id = NULL 


рдЬреЙрдп рдХреЗ рд▓рд┐рдП рдХрдард┐рди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ .... рдкрд░рд┐рдЪрд┐рдд рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░:
 $query->join('pixies'); //     $query->on('fairies.id','pixies.id'); //     $query->on('fairies.count','*>','pixies.count'); 


рдПрдХ рдЙрдиреНрдирдд рдбреЗрд╡рд▓рдкрд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ




рдХреЛрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ PHPUnit рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ 166 рдкрд░реАрдХреНрд╖рдг рдФрд░ 1151 рддреБрд▓рдирд╛рдПрдВ рджреЗрддрд╛ рд╣реИред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдХрд╛рдо рдХреЗ рд╕рд╛рде рдореЗрд░реА рдЦреБрд╢реА рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░реЗрдЧрд╛ рдФрд░ рдУрдЖрд░рдПрдо рдореЙрдбреНрдпреВрд▓ рдХреА рдЕрдВрддрд┐рдо рд░рд┐рд▓реАрдЬ рджреВрд░ рдирд╣реАрдВ рд╣реИред

Source: https://habr.com/ru/post/In205710/


All Articles