Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Why don't you try "Query Builder"
Search
omoon
May 21, 2016
Technology
3k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Why don't you try "Query Builder"
PHPカンファレンス福岡2016のトークで使ったスライドです
関連レポジトリ)
https://github.com/omoon/phpconfuk2016
omoon
May 21, 2016
More Decks by omoon
See All by omoon
My First Adobe XD Plugin
omoon
0
170
LaravelでTDDを体験しよう #phpcon2018
omoon
1
4.5k
Laravel でアプリケーションを開発し Heroku で公開するまでの一部始終 #laravel_osaka
omoon
3
1.5k
素晴らしき Carbon の世界 〜あなたも今日から日時マスター〜
omoon
4
14k
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon
0
200
Dive into the Cloud with our buddy, lovely PHP!
omoon
0
1.2k
FuelPHP をさわってみて #phpkansai
omoon
2
240
Other Decks in Technology
See All in Technology
Autonomous AI Databaseサービス・アップデート(FY27)/ adb-service-update-jp-fy27
oracle4engineer
PRO
0
110
IoTハンズオンの舞台裏
shirouz
2
130
AIに丸投げしないトイル削減 / Eliminating Toil Without Leaving It All to AI
kohbis
2
350
AIで開発は速くなったのに、なぜ現場は楽にならないのか 〜あなたの組織のボトルネックを突き止めるワークショップ〜
jacopen
1
260
Bet AI Day 2026丨How We Bet AI: AIとともに働く場をつくる
layerx
PRO
2
2.3k
PdMをやめて、 "プロダクトビルダー"という 働き方に変えました / PdM to Product Builder
shikichee
2
710
プロダクトエンジニアに必要な「いい感じ」に作る能力 〜たくさん作れる時代に、どこまで作るかの決め方〜
jnishime_dresscode
2
1.4k
Bet AI Day 2026丨Production-Ready AI Agents — エンタープライズの実務を任せるための設計と運用
layerx
PRO
3
2.2k
20260903 Tokyo Jazug Night #62 | Azure エンジニアよ、 その環境は本当にセキュアか?
olivia_0707
1
620
AndroidでHDRメディアを「壊さずに」扱う
chigichan24
0
400
なぜSRE・セキュリティは評価されないのか?守りの組織を事業成長エンジンに変えた実践
cscengineer
PRO
3
2.2k
AIで実装は速くなった。なのにプロダクトは速くならない。職能の壁を越えて価値のフローを設計する
nwiizo
6
7.1k
Featured
See All Featured
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.3k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
490
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
The Pragmatic Product Professional
lauravandoore
37
7.4k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
770
sira's awesome portfolio website redesign presentation
elsirapls
0
400
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
The Curse of the Amulet
leimatthew05
2
14k
Visualization
eitanlees
152
17k
How to train your dragon (web standard)
notwaldorf
97
6.8k
Scaling GitHub
holman
464
140k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Transcript
8IZEPO`UZPVUSZ 2VFSZ#VJMEFS 1)1$POGFSFODF'VLVPLB .BZ 4PUBSP0.63"
"CPVU.F w4PUBSP0.63" w0TBLB +BQBO w,BOTBJ1)16TFST(SPVQ4UB⒎ w1)1 w-BSBWBM wPNPPOPSH
w!PNPPO
None
2VFSZ#VJMEFS
2VFTUJPOT w%PZPVLOPX42- w.Z42-1PTUHSF42-0SBDMFPUIFST w1%0 w,OPX2VFSZ#VJMEFS w6TF2VFSZ#VJMEFS w6TF03.
/PUF w1%0 w*MMVNJOBUF%BUBCBTF w.Z42-
4BNQMF%BUBCBTF
None
5PQJDT w8IBUJTl2VFSZ#VJMEFSz w#FOFpUT w)PXUPBQQMZ2VFSZ#VJMEFSUPZPVSPXOBQQ w4PNFFYBNQMFT
8IBU`T 2VFSZ#VJMEFS
1JD DPOTUSVDUJPO
1JD DPOTUSVDUJPO
"UPPMUPCVJME42-
None
SELECT name, price FROM books WHERE name LIKE '%PHP%' ORDER
BY price DESC LIMIT 10
SELECT name, price FROM books WHERE name LIKE '%PHP%' ORDER
BY price DESC LIMIT 10
&BDIQBSUPG42- IBTB30-&
$builder->table('books') ->where('name', 'like', '%PHP%') ->orderBy('name', 'desc') ->take(10) ->select('name', 'price');
SELECT `name`, `price` FROM `books` WHERE `name` LIKE '%PHP%' ORDER
BY `price` DESC LIMIT 10
DELETE FROM `books` WHERE `name` LIKE '%PHP%' ORDER BY `price`
DESC LIMIT 10
$builder->table('books') ->where('name', 'like', '%PHP%') ->orderBy('price', 'desc') ->take(10) ->select('name', 'price');
$builder->table('books') ->where('name', 'like', '%PHP%') ->orderBy('price', 'desc') ->take(10) ->delete();
$builder->table('books') ->where('name', 'like', '%PHP%') ->orderBy('price', 'desc') ->take(10) ->select('name', 'price');
$builder->table('books') ->where('name', 'like', '%PHP%') ->orderBy('price', 'desc') ->take(10) ->select('name', ‘price') ->get();
#FOFpUT
#FOFpUT w&BTZUPFEJU w4FDVSF w&BTZUPSFBE w3FVTBCMF
&BTZUPFEJU
%FNP
4FDVSF
$name = 'PHPΤϯδχΞཆಡຊ'; $sql = " SELECT `name`, `price`
FROM `books` WHERE `name` = $name ORDER BY `price` DESC "; $sth = $pdo->prepare($sql); $sth->execute();
None
None
$name = "t' OR 't' = 't"; $sql =
<<<'SQL' SELECT `name`, `price` FROM `books` WHERE `name` = $name ORDER BY `price` DESC SQL; $sth = $pdo->prepare($sql); $sth->execute();
None
$name = "t' OR 't' = 't"; $sql =
<<<SQL SELECT `name`, `price` FROM `books` WHERE `name` = ? ORDER BY `price` DESC SQL; $sth = $pdo->prepare($sql); $sth->execute([$name]);
None
$name = "t' OR 't' = 't"; $builder->table('books') ->select('name',
'price') ->where('name', '=', $name) ->orderBy('name', 'desc');
&BTZUPSFBE
SELECT `name`, `price` FROM `books` WHERE `name` LIKE
‘%PHP%' AND `price` > 2000 ORDER BY `price` DESC LIMIT 10
$sql = " SELECT `name`, `price` FROM `books`
WHERE `name` LIKE :name AND `price` > :price ORDER BY `price` DESC LIMIT :limit "; $sth = $pdo->prepare($sql); $sth->bindParam(':name', $name); $sth->bindParam(':price', $price); $sth->bindParam(':limit', $limit, PDO::PARAM_INT); $sth->execute();
$name = '%PHP%'; $price = 2000; $limit = 10;
$sql = "SELECT `name`, `price` FROM `books` WHERE `name` LIKE ? AND `price` > ? ORDER BY `price` DESC LIMIT ?"; $sth = $pdo->prepare($sql); $sth->execute([$name, $price, $limit]);
$name = '%PHP%'; $price = 2000; $limit = 10;
$builder->table('books') ->select('name', 'price') ->where('name', 'like', $name) ->where('price', '>', $price) ->orderBy('name', 'desc') ->take($limit);
None
3FVTBCMF
SELECT `name`, `price` FROM `books` WHERE `price` <
2000
$cheap_books = $builder->table('books') ->where('price', '<', 2000);
$cheap_books->orderBy('name'); $cheap_books->orderBy('price'); $cheap_books->orderBy('price', 'desc'); $cheap_books->orderBy('price', ‘desc') ->take(10);
$cheap_books->orderBy('price', ‘desc') ->take(10) ->select();
$cheap_books->orderBy('price', ‘desc') ->take(10) ->delete();
$cheap_books->count(); $cheap_books->max('price'); $cheap_books->min('price'); $cheap_books->average('price'); $cheap_books->sum('price');
#FOFpUT w&BTZUPFEJU w4FDVSF w&BTZUPSFBE w3FVTBCMF
)PXUPBQQMZ 2VFSZ#VJMEFS UPZPVSPXOBQQT
{ "require": { "illuminate/database": "5.2.*" } }
require_once '/path/to/vendor/autoload.php';
use Illuminate\Database\Capsule\Manager as Builder; class Connection { private $host =
'localhost'; private $username = 'user'; private $password = 'pass'; private $database = 'database'; public function getBuilder() { $builder = new Builder(); $builder->addConnection([ 'driver' => 'mysql', 'host' => $this->host, 'database' => $this->database, 'username' => $this->username, 'password' => $this->password, 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ]); $builder->setAsGlobal(); $builder->setFetchMode(PDO::FETCH_ASSOC); return $builder->connection(); } } $builder = (new Connection())->getBuilder();
4PNFNPSFFYBNQMFT
+0*/
SELECT `books`.`name` AS `book_name`, `books`.`price`, `authors`.`name` AS `author_name`, `authors`.`age` FROM
`books` LEFT JOIN `authors` ON `books`.`author_id` = `authors`.`id` WHERE `books`.`price` >= ?
$results = $builder->table('books') ->leftJoin('authors', 'books.author_id', '=', 'authors.id') ->where('books.price', '>=', 5000)
->select( 'books.name as book_name', 'books.price', 'authors.name as author_name', 'authors.age' );
*/4&35
$values = []; for ($i = 0; $i < 10000;
$i++) { $values[] = [ 'name' => 'name' . $i, 'author_id' => rand(1, 10), 'price' => rand(500, 10000), ]; } $sql = "INSERT INTO books (name, author_id, price) values (?, ?, ?)”; $sth = $pdo->prepare($sql); foreach ($values as $value) { $sth->execute(array_values($value)); } $builder->table('books')->insert($values);
INSERT INTO `books`(`name`, `author`, `price`) VALUES(?, ?, ?) . .
. VS INSERT INTO `books`(`name`, `author`, `price`) VALUES(?, ?, ?),(?, ?, ?),(?, ?, ?)......
NZTRMJ T 1%0 T 2VFSZ#VJMEFS NT
61%"5&3"8
UPDATE `books` SET `name` = CONCAT('ʲ͍҆Αʂʳ', `name`) WHERE `price` <
3000
$cheap_books->update([ 'name' =>"CONCAT('ʲ͍҆Αʂʳ' , `name`)" ]);
None
$cheap_books->update([ 'name' => $builder->raw( "CONCAT('ʲ͍҆Αʂʳ' , `name`)" ) ]);
None
"OZ2VFTUJPOT