Laravel Passportとは 平たく言えばAPIにOAuthに従った認証機能を追加できる機能。Laravelのエコシステムの1つ。 すこし大げさなので標準のapi_tokenを利用したり、外部ライブラリを利用するのもあり。 対応するToken発行方式 PassportはOAuthで定義されている4つの方法に加え、Personal Access (Grant) Tokenという主に内部利用向けのToken発行ができる(名前はOAuthの正式な呼び方とは微妙に違うみたい)。 OAuth2 with authorization codes (Auth Code)→SNS認証でよく使うやつ(確認画面あり・Code発行あり) Password Grant Token(確認画面無し。Codeなし。ID, PWでTokenを発行) Implicit Grant Token(いきなりTokenを発
こんにちは、@yoheiMuneです。 Laravelで実装していて、親テーブル取得時に関連する子テーブルの一覧も合わせて取得したいことがあると思います。そんな時に便利なwith関数について、今日はブログを書こうと思います。 目次 何がしたいのか 例えば、投稿を表現するpostsテーブルと、その投稿内容(=1〜N枚の画像)を表現するpost_contentsテーブルがあるとします。特定のPostを取得した際に、それにひもづくPostContentsを一覧で取得したい場合に、どうしたら良いかを記載しています。 手順1:モデル定義で関連(hasMany)を表現する まずは、PostsとPostContentsのモデルを定義し、hasManyを用いて関連も合わせて定義します。 <?php namespace App; use Illuminate\Database\Eloquent\Model;
function run() { Schema::create('parents', function (Blueprint $table) { $table->increments('id'); $table->string('email', 60)->unique(); $table->string('name', 30); $table->timestamps(); $table->softDeletes(); }); Schema::create('children', function (Blueprint $table) { $table->increments('id'); $table->string('email', 60); $table->foreign('email')->references('email')->on('parents')->onDelete('c
Laravelで開発をしている中で、リレーション先のテーブルのカラムに対して検索をかけたいことが発生しました。 これが結構はまってしまいました。 今回は「リレーション先のテーブルに対して検索をかけたい」ケースついてエントリーします。 状況 データベース 部署テーブル:depts 従業員テーブル:employees モデル class Dept extends Model { //hasMany設定 public function employees() { return $this->hasMany('App\Employee'); } } class Employee extends Model { //belongsTo設定 public function dept() { return $this->belongsTo('App\Dept'); } } やりたいこと 1階で働いている
Laravelを使ってユーザーのavatar画像をアップロードする想定で、アップロード機能のサンプルを実装してみます。 開発環境 Laravel 5.3 Laravel Homestead PHP7.1系 MySQL 5.7系 Nginx ベースとなる画面をmakeする new file: app/Http/Controllers/HomeController.php new file: resources/views/auth/login.blade.php new file: resources/views/auth/passwords/email.blade.php new file: resources/views/auth/passwords/reset.blade.php new file: resources/views/auth/register.blade.php new
タイトルの通りです。画像やファイルのstorage保存の記事はいくつか見かけましたが、jsからPOSTする記事についてはあんまり見かけなかったので書きました。 この記事ではaxios経由で画像をPOST、LaravelのAPI処理に渡しているサンプルコードを簡単に説明します。概要は以下の通りです。 canvasに画像を描画し、blobデータを作成 blobをformDataにappendして、axiosでPOST POSTされたblobファイルを、Laravel API側で処理・保存 View側の処理 データのBLOB化 以下の処理かtoBlobを使ってCanvasに描画した画像ファイルをblob化します。 // Canvasのデータをblob化 const type = 'image/png'; const dataurl = this.canvas.toDataURL(type); /
今日はLaravelでよく出てくるCollectionデータのテストコードを書いていて ハマったのでまとめます。 サンプルはこちら。 Post一覧取得APIのテストコード · aihara005/laravelprot@ba2e4b8 · GitHub PHPUnitテスト by aihara005 · Pull Request #3 · aihara005/laravelprot · GitHub PHPUnitの準備 サンプルテストを作る サンプルテストを実行する コレクションのテストを作る テストを実行する エラー PHPUnitの準備 まずはローカルでphpunitを使うための準備。 $ vi .env APP_URL = 自分のURL ※ php artisan serveで立ち上げてる時は http://127.0.0.1:8000 サンプルテストを作る 早速簡単なテストを作っ
こんにちは。 ニシザワです。 Laravelでリレーションさせているデータ ・1対1 ・1対多 ・多対多 があると思います。 これを関連テーブルと一緒に保存する方法を今回は紹介します。 1対1の例 モデルは下記 ※関連モデルにfillableを設定するのを忘れずに。 class User extends Model { protected $fillable = [ 'name', 'email' ] /** * ユーザーに関連する電話レコードを取得 */ public function phone() : HasOne { return $this->hasOne(Phone::class); } } リクエストの中はこのような形になっているとしましょう。 [ 'user' => [ 'name' => 'hoge', 'email' => 'hoge@hoge.com' ], 'pho
$collection = collect([ 'prod-100' => ['product_id' => 'prod-100', 'name' => 'Desk'], 'prod-200' => ['product_id' => 'prod-200', 'name' => 'Chair'], ]); $keys = $collection->keys(); $keys->all(); // ['prod-100', 'prod-200']
はじめに 思ったより数が多かったので、3回に分けることにしました。 目次 【5.5対応版】 Laravel の Collection を使い倒してみたくなった 〜 サンプルコード 115 連発 1/3(本記事) 【5.5対応版】 Laravel の Collection を使い倒してみたくなった 〜 サンプルコード 115 連発 2/3 【5.5対応版】 Laravel の Collection を使い倒してみたくなった 〜 サンプルコード 115 連発 3/3 概要 Laravel には、Collection という、配列のラッパークラスがあります。 Laravel 標準の ORM である Eloquent で複数レコードを取得する際に、この Collection のインスタンス (正確には Collection を継承したクラスのインスタンス) で返ってきたりしますが、もちろん、アプリ
はじめに はじめまして、オープンロジのエンジニアで @ttaka と申します。 この記事は OPENLOGI Advent Calendar 2017 の8日目になります。 さて、弊社サービスのサーバーサイド開発には、 PHP のフレームワークである Laravel が使われています。今回はその Laravel の ORM である Eloquent を使う際に、ちょっとハマりそうなポイントをいくつかご紹介したいと思います。 ハマりポイント 論理削除トレイトはテーブルの結合先では動作しない 論理削除自体には賛否ありますが、 Eloquent には標準でその機能が提供されています。 例えば、次のような論理削除を使用している User と Profile クラスがあるとします。 class User extends Model { use SoftDeletes; public function
概要 特定のモデルを削除した際に、関連するモデルを同時に削除する方法について。 前提となる条件 Laravel学習目的で開発した monelytics のソースコードをベースに説明を進める。ソースコードは GitHub を参照。 PHP 5.5.21 Laravel 4.2 実装 テーブル構成 ActivityCategoryGroupモデルは複数のActivityモデルを所有する (※説明を簡略化するため、ここでは最小限のカラムのみ記載する)。 CREATE TABLE IF NOT EXISTS `monelytics`.`activity_category_groups` ( `id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) CREATE TABLE IF NOT EXISTS `monelyt
public function rules() { return [ 'name' => [ 'required', Rule::unique('countries')->whereNull('deleted_at') ] ]; } 2. カスタムバリデーションでEloquent ORMを使う Laravel5でカスタムバリデーションを参考にするとできる。今はめんどくさいけど、Laravel 5.5. Custom Validator Rulesによると、5.5で楽になりそう また、existsについても同じように、「削除したのにバリデーションが通ってしまう」現象が起きるので、同様の処置が必要です。 ->delete()メソッドを使うと孫が消えてくれない 論理削除のときにDelete on Cascade的なことをやりたいときの話 Country < User < Postのリレーションを
イントロダクションIntroduction Eloquent ORMはLaravelに含まれている、美しくシンプルなアクティブレコードによるデーター操作の実装です。それぞれのデータベーステーブルは関連する「モデル」と結びついています。モデルによりテーブル中のデータをクエリできますし、さらに新しいレコードを追加することもできます。The Eloquent ORM included with Laravel provides a beautiful, simple ActiveRecord implementation for working with your database. Each database table has a corresponding "Model" which is used to interact with that table. Models allow you
[FuelPHPのORMでinsert前とかをフックして何か処理をする (´・ω・`) - 杏z 学習帳 を見て、Laravel の Model Event を思い出したので書いておきます。 上記みたいに Model をあれやこれやする前後に処理をはさみたい! ということがあると思います。Laravel には Model Event という仕組みが用意されていて楽に書くことができます。 書き方 インサートする前にログを出力したい場合です。 <?php class Sample extends Eloquent { // boot をオーバーライド protected static function boot() { parent::boot(); // インサート前なので creating メソッドを定義 self::creating(function($ribbit) { Log::in
<?php class foo { function name() { echo "Classs name is " , get_class($this) , "\n"; } } // オブジェクトを生成 $bar = new foo(); // 内部から呼ぶ場合。 $bar->name(); // 外部からも呼べる。 echo "Class name is " , get_class($bar) , "\n"; ?>
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く