
目次
背景
こんにちは。 かりんとうマニア(@karintozuki)です。
軽量って響きが好きです。
Code IgniterはPHPの軽量なフレームワークです。
また、SQLiteも名前にLiteと入ってるくらいなので、軽量なDBです。
今回はその二つを使うサイトを作ってみたので、
その際の知見を書いておきます。
作ったもの
ポスッターという心の叫びをポストできる、というサイトを想定しました。
勉強目的に作ったサイトなので、細かいところはあまり突っ込まないで欲しいですが、
フォームに名前と内容を入力して送信すると、
それが一覧に追加される、というシンプルな機能を持っています。

T○itterみたいなのにする予定だったのですが、
どちらかというと5○hみたいになってますね。
GitHubにソースをあげたので、適宜見てみてください。
https://github.com/karintomania/postter
SQLiteとの接続
CodeIgniterから接続するための設定をしていきます。
接続情報の設定
Database.phpの$defaultという変数に接続情報を設定します。
デフォルトのSQLiteのDBファイル配置場所はプロジェクトフォルダ内のwritableファルダです。
writableフォルダ内にdbファイルがある場合、
databaseプロパティはファイル名を指定するだけでOKです。
1 | public $default = [ |
権限の確認
SQLiteは普通のDBと違いユーザなどによる認証がありません。
ですが、dbファイルに書き込むことでデータを保存しているので、
普通のファイルと同じくファイルへの書き込み権限が必要です。
Apacheなどを利用している場合は、実行ユーザが
dbファイルに書き込み権限を持っていることを確認しましょう。
これでめちゃくちゃハマりました。皆様はお気をつけください。
Model
Modelを定義します。
1 |
|
若干解説をすると、$table
には言わずもがな、テーブル名を定義します。
$allowedFields
には、save()メソッドを使う際の更新対象カラムを定義します。
saveメソッドはinsertとupdateをよしなにやってくれるメソッドです。
saveメソッドは自分で実装する必要がありません。
getPosts()
メソッドの中では、
$this->findAll();で全件検索ができるので、それを利用しています。
新規ポストを上に持っていきたいので、orderBy()を追加しています。
Controller
特に変わったことはしていません。
1 |
|
$model->save($new_post);
ここでsaveメソッドを利用していますね。
まとめ
権限で盛大にハマった以外はサクサクっと開発を進めることができました。
SQLiteは他のDBよりも気楽に使えるので大好きです。
皆様もぜひ何かサービスを作ってみてください。
それじゃ今日はこの辺で。
関連記事
こちらの記事もおすすめです。