Laravel3のSchemaでmediumtextやlongtext型などを使えるようにする

カテゴリ:Web制作タグ:,

こんにちはUKです。久しぶりのWeb製作ネタです。
もうLaravel4のリリースも近づいてきているようですが、
今回は最近使っているLaravel3についてのTips的なものです。

Laravel3ではマイグレーション用のDBへテーブルを作成するコードは以下のような感じに書くと思います。

しかし、今回どうしてもtext型では収まらないデータを格納出来るようにする必要が出て来ました。
※65,535バイトを超えるデータ。
ということで、mediumtext型やlongtext型でカラムを作成したいのですが、laravelのデフォルトだとそれ用の関数が用意されていないっぽい…。
作成後、phpMyAdminやコマンドで型を変更すれば別に問題ないといえば問題ないのですが、rollbackした場合なんかに再度手動で設定しなくてはならないのも忘れやすい気がするので、どうにか出来ないかなーと調べていました。

そうしたら、公式フォーラムに似たような事をしている方の投稿を見つけました※フォーラムではenum型を追加する場合の記述みたいです。
Create MySQL Enum columns
こちらを参考に、今回はmediumtext型とlongtext型を追加して使えるようにしてみたいと思います。

このページの内容

  1. フォルダの作成
  2. mysql.phpの作成
  3. table.phpの作成
  4. schema.phpの作成
  5. application.phpの編集
  6. 実際に使う
  7. 終わりに

まず、/application/libraries/下にフォルダを作成します。

上記のような構成になるように、mycustom、database、schema、grammarsフォルダを作成します。

次にgrammarsフォルダの中にmysql.phpを作成します。
中身は下記のようにします。
※タブインデントがコピーした際にコードが全角スペースになってしまう場合手動で直して下さい。

次に、schemaフォルダの中にtable.phpを作成します。
中身は下記のようにします。
※タブインデントがコピーした際にコードが全角スペースになってしまう場合手動で直して下さい。

次に、databaseフォルダの中にschema.phpを作成します。
中身は下記のようにします。
※タブインデントがコピーした際にコードが全角スペースになってしまう場合手動で直して下さい。

ファイルの作成が終わったら、application.phpの編集を行います。

Class Aliasesにある、Schemaの項目を今回作成したものへ変更します。

以上でファイルの作成・編集は完了です。

このようにmediumtextやlongtext型でカラムを作成することが出来るようになりました。めでたしめでたし。
他にもBIGINTを追加したりといったことも出来ると思いますので是非チャレンジしてみて下さいね!

今回はどうしてもmediumtext型にカラムをする必要があったため、調べてみましたが正直今回のようにするべきなのかは分かりません。
最初に書いたようにphpMyAdminやコマンドでもカラムの型の変更は出来るためそちらの方が手っ取り早くもあります。

今回動作確認は簡単に行なっていますが(migrate及びmigrate:rollback時にエラーが出ない、mediumtext型、longtext型にちゃんとなっているかの確認)、Laravel3のコアファイルや仕組みなどを完全に理解して作成を行なっているわけではないので、参考にする際は十分にテストしていただきますようお願いいたします。
逃げみたいでごめんなさい(´・ω・)自信がないです。

また、記事の内容に誤りがあったりこう書いた方が良いなど気がついた点がございましたら、是非コメントやお問い合わせにてお知らせいただければ幸いです。

あとでよむ / みんなにシェアする

このエントリーをはてなブックマークに追加
LINEで送る

コメントをする / みる

コメントを残す

コメントはまだありません。

検索する

カテゴリ一覧

タグ一覧

お知らせ アクセス解析 アプリケーション ゲーム サーバー スニペット プラグイン 動画 日記 Laravelパッケージ Laravel3 Laravel4 Tips Webサービス Webデザイン WordPress

最近投稿された記事

つぶやき

【GIGAZINE読者限定早い者勝ち】無料でDropbox・Googleドライブなどのクラウドを自由自在に同期・一括管理できる「まとめてクラウド」が先着5万人48時間だけゲット可能 - GIGAZINE gigazine.net/news/20151010-…

約2年前

離れていてもコミュニケーションが取りやすい便利なサービス「Remotty」 #remotty remotty.net

約2年前

RT @localdisk: メジャーどころがたくさん / 【セキュリティ ニュース】「WPTouch」など多数のWordPressプラグインに脆弱性(1ページ目 / 全1ページ):Security NEXT security-next.com/057930

約2年前

Javascript フレームワーク「Aurelia」aurelia.io

約3年前

dockerで起動済みのコンテナに対して何かしたい時は、docker exec -it コンテナ名 /bin/bashで入って実行したり、docker exec -it コンテナ名 supervisorctl restart nginxみたいな事も出来て便利。

約3年前

サーバー移転完了に伴いサイトの閲覧も可能な状態になりました。移転作業中にご訪問いただいた方には大変ご迷惑をおかけいたしました。今後このようなことがないよう気をつけて参ります。

約3年前

現在当サイトが閲覧出来ない状態となっております。こちらはサーバーの移転作業に遅れが生じているためとなっております。ご利用いただいている方にはご迷惑をおかけいたします。

約3年前

WordPress4.1.1(日本語版)が利用出来るようになりました wp.me/p4RkJY-Dj

約3年前

RT @keito_jp: Twitterをサマーウォーズ的に表示させるやつを製作中。遊んでみてね。 open.moo.jp http://t.co/gIgp5Gh6qW

約3年前

任天堂、YouTubeの広告収入を動画制作者とシェアする「Creators Program」サービス開始 | Game*Spark - 国内・海外ゲーム情報サイト s.gamespark.jp/article/2015/0…

約3年前

↑上へ戻る