2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

データベースフレームワークMedooの書き方 備忘録

Posted at

たまたま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を使ってみても良いかと思います








2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?