基盤系の開発などをしていると、売上データや顧客データなどが書かれたExcelファイルや、CSVファイルを読み込んで、DBに格納するというシーンがボチボチあるため、対応しやすいようQiitaにまとめておく。 環境# PHP 7.1.7 Laravel 5.6.33(pureでも問題ない、使うのはpure標準の関数だか開発した環境がたまたまLaravelだっただけ) MySQL 5.7.22 使う主な関数# fopen()### 第一引数に指定したファイルを第二引数で指定したファイルモードで開く。 今回の場合はCSVファイルを開くのに使用する。 ファイルモードに関してはドキュメントを参照するのが一番良いと思う。とりあえず今回使うのは、読み込み専用でファイルがなかった場合falseを返す、'r'となる。
「もっと簡単に」呼び出せるようにパッケージ化しました。 詳細はこちら Watson Assisantとは 会話系のインターフェースを提供してくれるIBMのサービスです。 とりあえずデモ こんな感じで動かしていきます。 ※デモ内ではWatson AssistantとIBM Cloud Function(ICF)を連携させて、天気予報を取得しています。 Watson AssistantとICFの連携については別記事で書こうと思います。 システム概要 Watson AssistantをWebアプリケーションでどうやって使うか。 WatsonのサービスはREST APIで簡単に利用することが出来ます。 以前の記事ではNode.jsでWatson Assistantとの連携をしましたが、 今回はLaravelとGuzzleを使ってWebアプリケーションとWatson Assistantを連携する方法
ひとつの Web アプリを、複数の顧客に対し、ドメインを分けてそれぞれにサービスを提供したい。各顧客はそれぞれでユーザーを登録し、ログインをおこなう。データはドメインごとに完全に独立させたい。 環境 Symfony 2.8 Doctrine 2.4 参考 Doctrine filters and annotations to improve security and ease development in a Symfony app 方針 顧客をアクセス時のサブドメインで識別する。(DNS や証明書はワイルドカードで何でもアクセスできるようにしておく。) すべてのテーブルに customer_id フィールドを持たせる。 読み出すときは検索条件に常に customer_id による絞り込みをおこなう。 書き込むときは常に customer_id を設定する。 実装 すべてのテーブルに cu
ひとつの Web アプリを、複数の顧客に対し、ドメインを分けてそれぞれにサービスを提供したい。各顧客はそれぞれでユーザーを登録し、ログインをおこなう。データはドメインごとに完全に独立させたい。 環境 Symfony 2.8 Propel 1.5 方針 顧客をアクセス時のサブドメインで識別する。(DNS や証明書はワイルドカードで何でもアクセスできるようにしておく。) すべてのテーブルに customer_id フィールドを持たせる。 読み出すときは検索条件に常に customer_id による絞り込みをおこなう。 書き込むときは常に customer_id を設定する。 実装 顧客IDをアクセスドメインから取得する アクセスドメインから顧客IDを取得するためのサービスを作成する。RequestStack->getMasterRequest()->getHost() でドメインを取得し、先頭
初投稿です。 laravelでアプリケーションを作ってみようと思い、その過程で学んだことをevernoteに書き溜めているのですが、どこかの誰かの役に立つかもしれないと思って公開することにしました。 現在進行形でLaravel学習中なので、この内容もどんどん修正していきます。 PHPやGitHub自体のメモもごちゃまぜになっちゃっているので、 そのうち整理します。 laravelのインストールなど(Windows10前提) ・https://satouyousuke.hatenablog.com/entry/2017/08/17/161224 ・https://qiita.com/maruyama42/items/43d7029d7e00e587bf0b ・https://sekaiokaeru.com/tips/install-composer XAMPPとSkypeが競合して起動できな
概要 バックエンドのフォームのドロップダウンにハードコードした選択肢ではなく、DBに入れたデータを使用する場合に、デフォルト値を設定する方法のメモ。 フォームにドロップダウンを表示するには、モデルにリレーションを定義するか、ドロップダウンコントロールを使う方法があるが、いずれも意図的にデフォルト値を入れてやらないと、未選択の状態でも選択肢のどれかが勝手に選択された状態になってしまう。 未選択の状態であることをデータ(0やnullなど)として入れるためには、未選択の状態がドロップダウンに表示されるようにする必要があるが、次の3つの方法が考えられる。 選択肢にデフォルト値が含まれるようにデータを用意する フィールド定義で placeholder を設定する オプション取得メソッドで意図的にデフォルト値を入れる TL;TR 結論から言うと3番目の方法が一番良い。 1. 選択肢にデフォルト値が含ま
Using version ^2.0 for laravel/installer ./composer.json has been created Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 10 installs, 0 updates, 0 removals - Installing symfony/process (v4.1.4): Downloading (100%) - Installing symfony/polyfill-ctype (v1.9.0): Downloading (100%) - Installing symfony/filesystem (v4.1.4): Downl
割とはまったのでメモ 同じテーブルへのアソシエーション 前提:コメントへのレスコメントができる機能を想定する。 簡易的な例のため、コメントとレスコメントは__1対1__の関係にあると仮定。 CakePHPにおけるアソシエーションの記載 1対1の関係はhasOneメソッドによって設定する。 このメソッドの__第一引数__が__SQLにおけるテーブルのエイリアス(別名)__になる。 class CommentsTable extends Table { public function initialize(array $config) { $this->hasOne('ResponseComment', [// ResponseCommentがSQL中のCommentsテーブルの別名になる。 'className' => 'Comments' // 実際に扱うテーブル(テーブルクラス)を指定す
はじめに これまた備忘録ではあるのですが、キッカケとしては、今個人的な成果物のような物を作成してまして、その際Modelを触ったのですが(普段も触っていますが)、新しくTableとEntityを作成する事になり、その際、そもそも論のような事が発生したのがキッカケです。 なんとなく触っていた、という印象なので、改めて作成する、となった時に手が止まりました。特にEntityとは?感が強かったので、調べた内容をアウトプットして、まとめたいと思います。 Modelとは まず最初に大枠であるModelについて簡単に触れます。 Cakeに限らずWebフレームワークは、M(Model)、V(View)、C(Controller)の三つの要素から構成されています。 上記の図のような構成になります。 Modelはデータ部分にあたり、DBとの密接な関係があり、DBへアクセスする部分と捉えてもいいのではないかと
よくあることですが、PHPUnitでテストを書いている場合、テストケースが増えてくると徐々に実行速度が気になってきます。テストの量が増え、完了するまでの時間が単純に増えていくためです。 そんなとき、とにかくテストをさっさと終わらせるためのtipsです。 テストする量を減らす ローカルで開発するときは毎回すべてのテストを実行する必要はないかと思います。そんなときはテストする量自体を減らしましょう。 filter や group オプションを使用し特定のテストだけ実行すると、実行テストの総量が減り完了までの時間は短くなります。 参考: PHPUnit で指定したのテストのみを実行する また、PhpStormなどのエディタの機能を使えば特定のテストを実行することがエディタ上で可能になります。 参考: Testing with PHPUnit カバレッジを計測しない filter や group
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く