Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
![[Laravel] Eloquent リレーションと Eager Loading - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/68efc2ece2d51ac7b89c5a53cc9dc7ea877e8182/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn.qiita.com%25252Fassets%25252Fpublic%25252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFtYXpvbmF3cy5jb20lMkYwJTJGMTA5MjQxJTJGcHJvZmlsZS1pbWFnZXMlMkYxNTQxNDg1NDY0P2l4bGliPXJiLTQuMC4wJmFyPTElM0ExJmZpdD1jcm9wJm1hc2s9ZWxsaXBzZSZiZz1GRkZGRkYmZm09cG5nMzImcz0wZjk4OWJiZThkOGQzYjljZDJjZTg5MzlmMDE4YTIzNg%2526blend-x%253D120%2526blend-y%253D467%2526blend-w%253D82%2526blend-h%253D82%2526blend-mode%253Dnormal%2526s%253D3c209079928ac63e0ae8d5a0020c701c%3Fixlib%3Drb-4.0.0%26w%3D1200%26fm%3Djpg%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9JTVCTGFyYXZlbCU1RCUyMEVsb3F1ZW50JTIwJUUzJTgzJUFBJUUzJTgzJUFDJUUzJTgzJUJDJUUzJTgyJUI3JUUzJTgzJUE3JUUzJTgzJUIzJUUzJTgxJUE4JTIwRWFnZXIlMjBMb2FkaW5nJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LXBhZD0wJnM9NDFhYWMwYzRjZjYyNTgwNGM2YmIzZWIwOWYyYWNkNmM%26mark-x%3D120%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBzaG9zaG8mdHh0LWNvbG9yPSUyMzFFMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtcGFkPTAmcz0zZjc3ZjlhMjljNWQ4MmFiZGRmMjQ3M2YwOTJmYWM1Yw%26blend-x%3D242%26blend-y%3D480%26blend-w%3D838%26blend-h%3D46%26blend-fit%3Dcrop%26blend-crop%3Dleft%252Cbottom%26blend-mode%3Dnormal%26s%3Dd7305f07f604016b5c455bdd05d7152d) 
      
  
 
  
  はじめに Laravelのいろいろなクラスに用意されているマクロは足りないメソッドをサブクラスを作らず直接追加する感じで使えてとても強力です。 実際に実行する関数の中身はPHPのクロージャーを使って与えるのですが、実行時には$thisをそのクラスに束縛しなおしているので、普通にそのクラスのメソッドで行えることは全部できます。private/protectedなメソッド/プロパティにもアクセスできます。 しかしPhpStormは束縛しなおされた$thisをうまく扱うことができないので、たくさん警告がでます。たとえば以前の記事「Eloquentでrelationのレコードの有無だけをサブクエリで取得したい」で定義したマクロはこんな感じになります。 黙らせる方法 いろいろ試して今使っている方法を紹介します。アイディアとしては「$thisの変化を指定できないのなら、マクロ定義を行うクラスに必要なメ
 
      
  namespace App\Http\Requests; use App\Http\Requests\Request; use Illuminate\Foundation\Http\FormRequest; class CreateUserRequest extends FormRequest { public function authorize() { return true; } /** * Validationルール * * @return array */ public function rules() { return [ 'name' => 'required', 'zip' => 'required', 'prefecture' => 'required', 'city' => 'required', 'address' => 'required', 'tel' => 'r
 
      
  思わぬ落とし穴 まず、CSV出力自体はマニュアルや参考資料が豊富に揃っているのでそれほど困らないかと思います。 そう。この手軽さゆえに以下のようなケースに陥りがちです(かく言う私も・・・) ・テスト環境でCSV出力を実装 ・テスト環境でテストデータをもとに色々なパターンでCSV出力 ・テストも問題無かったので本番環境に実装 ・本番環境でCSV出力実行! ・・・しばらくグルグル・・・ ・まだグルグル・・・・・・シュン・・ !!! まさかのメモリ不足による処理落ち・・ はい。理由は本番環境での数万件のデータに対してCSV出力機能が耐え切れなくなったのですね。。 あぁ、テスト環境でダミーデータ数万件用意して負荷テストをするべきだった・・・時すでに遅し・・ そうならないためにも 以下に、件数が多くてもデータを分割して出力することによりメモリ不足を回避する方法について 紹介したいと思います。(データ
 
      
  いろいろ調べてなんとかできたのでメモ。 参照したいカラムは「username」と「email」で、どちらかが一致すればログインできる。 環境 CakePHP 3.6.12 PHP 7.2.6 必要なファイルはbakeで生成済み。 ソース class AppController extends Controller { public function initialize() { parent::initialize(); $this->loadComponent('RequestHandler'); $this->loadComponent('Auth', [ 'authorize'=> 'Controller', 'authenticate' => [ 'Form' => [ 'fields' => [ 'username' => 'username', 'password' => 'p
 
      
  自主勉強がてらにLaravelでECサイトを作ってみようと思っているのですが、決済の処理を実装しようにも肝心の商品をデータとして用意する必要があります。 PHPではFakerを使って電話番号やメールアドレスと言った仮のデータを作ることが出来ますが、商品に関する仮データには対応していない様だったので作り方をざっとまとめます。 *基本的な処理や画面はLaravel学習帳のCRUD処理の内容を元にしています。 動作環境について OS:macOS High Sierra version: 10.13.6 Docker(Engine):18.06.1-ce 対象ブラウザ GoogleChrome:69以上 作成する環境 centOS:7.5 Laravel:5.6 PHP:7.2 MySQL:5.7 APache2.4 参考資料 CRUDアプリの作成(一覧) CSVファイルの特定の列を取り出す 商品
 
      
  はじめに Webアプリケーションの開発は、ローカル開発環境の構築手段の選択肢が増えたことによって、ここ10年ほどでかなり効率的に開発を行うことができるようになりました。 2000年代までは、オンプレサーバやレンタルサーバ上に共有の開発サーバを手配し、開発者がリモートからアクセスして開発・テストし、SVNでソースコードを管理することが多かったのではないかと思います。 しかし近年では、 Infrastructure as Code の流れから、インフラの設定をコードで定義し、かつそれらを本番や開発に関係なく持ち回れるようにすることで、各環境の構築に関する膨大なサポート作業を効率化し、アプリケーションを開発するまでの手間が大きく削減されました。(自動化する為の技術を覚える手間は増えました。) 私の所属するチームでは Vagrant + VirtualBox が基本構成なのですが、近頃はその上に
![docker - ローカル開発環境の構築 / Laravel on [ [Vagrant + VirtualBox] with Docker ] - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/0a6cc4bbaf71565fc02b2806eaa796b6e4b77dbd/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn.qiita.com%25252Fassets%25252Fpublic%25252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnMzLWFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkZxaWl0YS1pbWFnZS1zdG9yZSUyRjAlMkY3OTIyMiUyRmY1YjVmMDlhMzEzNTg2NmRhOGI4OWQ3MDZhYTViOWNhY2MwOTE2NjYlMkZ4X2xhcmdlLnBuZyUzRjE1Njk1ODg5NTc_aXhsaWI9cmItNC4wLjAmYXI9MSUzQTEmZml0PWNyb3AmbWFzaz1lbGxpcHNlJmJnPUZGRkZGRiZmbT1wbmczMiZzPTY2MzhjOGYxY2NhODhkZmUxNjBiOWJmOGY3YjZlNDU3%2526blend-x%253D120%2526blend-y%253D467%2526blend-w%253D82%2526blend-h%253D82%2526blend-mode%253Dnormal%2526s%253D47236298cb34af4aa1e90820a141da1d%3Fixlib%3Drb-4.0.0%26w%3D1200%26fm%3Djpg%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9ZG9ja2VyJTIwLSUyMCVFMyU4MyVBRCVFMyU4MyVCQyVFMyU4MiVBQiVFMyU4MyVBQiVFOSU5NiU4QiVFNyU5OSVCQSVFNyU5MiVCMCVFNSVBMiU4MyVFMyU4MSVBRSVFNiVBNyU4QiVFNyVBRiU4OSUyMCUyRiUyMExhcmF2ZWwlMjBvbiUyMCU1QiUyMCU1QlZhZ3JhbnQlMjAlMkIlMjBWaXJ0dWFsQm94JTVEJTIwd2l0aCUyMERvY2tlciUyMCU1RCZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1wYWQ9MCZzPTQ5YzE5MmNlNWQyNTYzMGI1OWZmOTY3OGE5NmNkNzQ5%26mark-x%3D120%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBhbmZhbmdkJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LXBhZD0wJnM9YTIwN2QwNzE3Nzk1NmZmNjcwOTg3M2NmMmM1ZDM5YTQ%26blend-x%3D242%26blend-y%3D480%26blend-w%3D838%26blend-h%3D46%26blend-fit%3Dcrop%26blend-crop%3Dleft%252Cbottom%26blend-mode%3Dnormal%26s%3D60af8df47d0e6cddc4d602b849511605) 
      
  リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く
