たまたまMedooを使う機会があったので、備忘録として書き方を残しておきます。
Medooとは
PHPのデータベースフレームワークです。 (公式サイトはこちら)構造
私が使った内容がこちらです。配置する順番は以下になります。sample.php
select(
"Account",
[
"[><]Shop" => ["Shop" => "id"],
"[><]Product" => ["Product" => "id"]
],
[
"Account.Id",
"Account.Name",
"Account.Tel",
"Shop.Id(Shop_id)"
"Shop.Name(Shop_Name)",
"Product.Name(Product_Name)"
],
[
"AND" =>
[
"Account.Id" => 1,
"OR" => [
"Account.Name[~]" => '田中',
"Account.Name[~]" => '鈴木'
]
],
"GROUP" =>
[
"Account.Id"
],
"ORDER" =>
[
"Account.CreatedDate" => "DESC"
]
]
);
書き方
1) テーブルをJOINする
JOINしたいテーブルの文頭にJOIN方法に合わせて以下の内容を付けます。
sample.php
// [>] == LEFT JOIN
// [<] == RIGH JOIN
// [<>] == FULL JOIN
// [><] == INNER JOIN
select(
"Account",
"[><]Shop" => ["Shop" => "id"]
```
<h3>2) 別名をつける</h3>
SQLで言うところの「AS句」です。
以下の方法でShopテーブルのIdカラムに対して「Shop_id」と言う別名をつけることができます。
```sample.php
[
"Account.Id",
"Shop.Id(Shop_id)"
]
```
<h3>3) あいまい検索</h3>
検索対象のカラム名の後ろに[~]を付けます。
```sample.php
"AND" =>
[
"Account.Name[~]" => '田中',
],
```
<h3>4) 重複を除く</h3>
SQLで言うところの「distinct」に相当する書き方は現時点ではありません。
色々とやり方はあるかもしれませんが、私はGROUPを使う方法で代替しました。(SQLのGROUP BYと同じ)
```sample.php
"GROUP" =>
[
"Account.Id"
],
```
<h2>まとめ</h2>
調べてみてもあまり多くの情報が出てきません。
<a href="https://medoo.in/doc">公式ドキュメント</a>を確認するのが一番良さそうです。
そこまで複雑でないSQLであれば、Medooを使ってみても良いかと思います。