20200729のlaravelに関する記事は11件です。

【Laravel】「ルート定義メソッド」と「ビュールート」の違いって?

ルート情報を用意しよう

通常、Laravelではルート記述をする際、大きく2つの書き方に分類することができます。
今回はその2つの書き方である「ルート定義メソッド」と「ビュールート」をご紹介。記述の例を、route/web.php にコーディングしていきます。

ルート定義メソッドの記述

Route::get('URIを記述','SampleController@index');
Route::post('URIを記述','SampleController@create');

ルート定義メソッドで記述するとこんな感じになります。
この定義メソッドの特徴としては、

・第1引数にURIテキストを記述
・第2引数に、第1引数のURIにマッチした場合の際のコールバックを指定

以上の特徴があります。

ビュールートの記述

Route::view('/welcome', 'welcome');

ビュールートは上記のような書き方です。

・第1引数にURIテキストを記述
・第2引数に、表示するビューの指定

上記の例の場合は、プロジェクトルート直下の「resources/views」内の「welcome.blade.php」を読み込もうとします。

ちなみに、オプションとして第3引数に、ビューへ渡すデータの配列を指定することもできます。

Route::view('/welcome', 'welcome', ['name' => 'Taylor']);

リダイレクトルートの記述

他のURIへリダイレクトするルートを定義する記述もできます。Route::redirectを使用しましょう。

Route::redirect('/url', '/idousaki', 301);

上記の例では、ブラウザで「/url」にアクセスしたら「/idousaki」にリダイレクトされるルート定義になっています。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

LighthouseでInterface TypeとUnion Typeを使いこなす【Laravel + GraphQL】

LighthouseのInterfaceやUnionを実装する際にちょっとハマったのと、それらに関する情報が調べても全然出てこなかったので記事にしました。

環境

PHP: 7.2.5
Laravel: 7.0
Lighthouse: 4.13

Interface Type

GraphQLのInterfaceはJavaやPHPでいう抽象(abstruct)フィールドと同様に、Interfaceで定義したフィールドを継承したTypeでも提供することを求められます。

またInterfaceを継承したTypeではそれ以外の値は自由に付け足すことが可能です。

GraphQL:Schemas and Types#Interfaces

interface Animal {
    id: ID!
    name: String!
}

type Cat implements Animal {
    id: ID!
    name: String!
    feed: String
}

type Dog implements Animal {
    id: ID!
    name: String!
    favorite: [DogItem!]!
}

type DogItem {
    id: ID!
    name: String
}

Iterface Typeを使用するメリットはそれ自体をQueryやMutationの引数や返り値に指定できることです。

例えば以下のような動物の一覧を返すQueryを定義したとします。

schema.graphql
type Query {
    animals: [Animal!]!
}

これを実行した場合、次のようにCatDogTypeが混ざったレスポンスが得られます。

query
query {
  animals {
    id
    name
    __typename

    ... on Cat {
      feed
    }

    ... on Dog {
      favorite {
        id
        name
      }
    }
  }
}
response
{
  "data": {
    "animals": [
      {
        "id": "1",
        "name": "hoge_cat",
        "__typename": "Cat",
        "feed": "pet_food"
      },
      {
        "id": "2",
        "name": "fuga_dog",
        "__typename": "Dog",
        "favorite": [
          {
            "id": "1",
            "name": "ball"
          }
        ]
      },
      {
        "id": "3",
        "name": "piyo_cat",
        "__typename": "Cat",
        "feed": "cat_food"
      }
    ]
  }
}

実装上の注意点

Lighthouse:Types #Interface

LighthouseでInterfaceを用いて実装するには通常のディレクティブ(@allや@createなど)を使用することはできず、Resolverを使用する必要があります。

$ php artisan lighthouse:query AnimalResolver
schema.graphql
type Query {
    animals: [Animal!]! @field(resolver: "App\\GraphQL\\Queries\\AnimalResolver@list")
}

またInterfaceを継承するTypeと同名のCatDogのモデルも作成します。
この時、配列や異なる名前のモデルを使用するとbasename() expects parameter 1 to be string, array givenというエラーが発生するので注意しましょう。

$ php artisan make:model Cat
$ php artisan make:model Dog
App\GraphQL\Queries\AnimalResolver
class AnimalResolver
{
    public function list($rootValue, array $args, GraphQLContext $context, ResolveInfo $resolveInfo)
    {
        $hoge_cat = new Cat;
        $hoge_cat->id = 1;
        $hoge_cat->name = 'hoge_cat';
        $hoge_cat->feed = 'pet_food';

        $fuga_dog = new Dog;
        $fuga_dog->id = 2;
        $fuga_dog->name = 'fuga_dog';

        // ※Interfaceを継承していない通常のTypeは配列でも問題ない。
        $fuga_dog_item = [
                'id' => 1,
                'name' => 'ball'
        ];

        // モデルを使用する場合は以下のようにする。
        // $fuga_dog_item = new DogItem;
        // $fuga_dog_item->id = 1;
        // $fuga_dog_item->name = 'ball';

        $fuga_dog->favorite = [$fuga_dog_item];

        $piyo_cat = new Cat;
        $piyo_cat->id = 3;
        $piyo_cat->name = 'piyo_cat';
        $piyo_cat->feed = 'cat_food';

        return [
            $hoge_cat,
            $fuga_dog,
            $piyo_cat
        ];
    }
}

Union

Union Typeは他のTypeを単に列挙する抽象Typeです。
ただしInterfaceとは異なり、フィールドを定義することはできません。

GraphQL:Schemas and Types#Union types

union Book = Novel | Comic

type Novel {
    novel_title: String!
}

type Comic {
    comic_title: String!
}

Queryの実行方法はInterfaceと同様にonを用いることでそれぞれのTypeのレスポンスを指定することができます。

schema.graphql
type Query {
    books: [Book!]!
}
query
query {
  books {
    __typename

    ... on Novel {
      novel_title
    }

    ... on Comic {
      comic_title
    }
  }
}
response
{
  "data": {
    "books": [
      {
        "__typename": "Novel",
        "novel_title": "hoge title"
      },
      {
        "__typename": "Comic",
        "comic_title": "comic title"
      }
    ]
  }
}

実装上の注意点

Lighthouse:Types #Union

Interfaceと同様にUnionを用いる場合には通常のディレクティブを使用できないため、Resolverを使用する必要があります。

またレスポンスのTypeに関してもModelを使用しないとエラーとなるので注意しましょう。

App\GraphQL\Queries\BookResolver
class BookResolver
{
    public function list($rootValue, array $args, GraphQLContext $context, ResolveInfo $resolveInfo)
    {
        $novel = new Novel;
        $novel->novel_title = 'hoge title';

        $comic = new Comic;
        $comic->comic_title = 'fuga title';

        return [
            $novel,
            $comic
        ];
    }
}

参考文献

GraphQL: Schemas and Types
Lighthouse: Types

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

古のエンジニアがlaravelを初めて触って習熟していく流れで、とても参考になった記事まとめ

経緯

普段はフロントエンド、vueやnuxtの開発を中心にやっています。今回はバックエンドも含めて開発する案件を受注したことをきっかけに、最近流行ってるlaravelでバックエンドを作ってみるか、ということになりました。

もともと、LAMP環境の構築やphp,mysqlは経験がある古のエンジニアです。
以前は素のphp+mysqlでフレームワークを使わずゴリゴリ書いていました。

開発環境はlinux(CentOS)をベアメタルサーバーにインストールして、phpやmysqlをソースからインストールしたりして使う、そういう時代のエンジニアです。HTTPサーバーといえばapacheでしょ?という時代から、最近のAWSは便利だよね〜という時代を生きてきた人です。

ちなみにデータセンターにオンプレミス環境を構築して月間数億PVのアクセスがあるソシャゲの開発運用とかを一人でやったりしていました。AWSに移行してからはRDSの負荷分散のためmemcachedサーバーにキャッシュレイヤーを作ったり、懐かしい。

話はそれてしまいましたが、最近はフロントエンド中心の開発案件をやっています。
バックエンドとのやり取りはAPIでやることが主流の時代になってきました。

久しぶりにバックエンド作るので、最新のモダンで人気なフレームワークをいっちょやってやるか!と思い人気のlaravelに目をつけたわけです。

laravelを選んだ理由

  1. 日本語で書かれたドキュメントやサンプルが多い
  2. AWSとの連携が組み込み済み
  3. API用のレイヤーが標準装備
  4. Model経由でのDBとの密な連携

この辺です。テーブル作成はphpmyadminで、PHPの中にSQLを直書きしていた私からすると、アプリケーション内からModelでDBと密接に結合しているのは新鮮です。

フロントエンドとはAPIで連携するので、その辺の機能も標準装備していることに魅力を感じました。

開発環境構築

https://qiita.com/ucan-lab/items/5fc1281cd8076c8ac9f4

Laravel環境構築はこちらの神リポジトリをcloneしてdockerで一発です。すごい便利な時代になったものですなぁ、昔はLinuxのインスト(ry

laravelのtableを作ってみて、表示させてみる

えっ!DBのテーブルってphpmyadminでチマチマ作るんじゃないんですか?

なるほど、作成、変更履歴も残せるマイグレーションと言うのがあるのか…

https://noumenon-th.net/programming/2020/01/15/laravel-mysql/

larvel passportでAPI認証のバックエンド側基本を作る→やめた

シンプルなjwtに切り替えました。

https://www.whizz-tech.co.jp/1442/

composer dumpautoloadってなんだ?

おかしくなったときはこれ。でもあまり使わない。

https://qiita.com/WebSysRider/items/e41f211f8c913e008d03

laravel上でvueベースの認証画面を作る

基本のapiのやりとり。

https://www.whizz-tech.co.jp/1453/

nodeが無いと言われたのでこちらでDockerを再構築

https://zukucode.com/2019/06/docker-laravel-nodejs.html

http://127.0.0.1/register
にアクセスしてみる

npm run devが抜けていたため、以下のファイルが見つからんかった

/css/app.css 178 KiB /js/app [emitted] /js/app
/js/app.js 1.4 MiB /js/app [emitted] /js/app

再度アクセスするとうまくいった

Personal access client not found. Please create one. エラーがでる

php artisan passport:client --personal

上記コマンドならうまくいく、

その後webで再度やるとうまく行った。なんでや?

これが回答かな?
https://stackoverflow.com/questions/56249565/why-we-have-to-create-personal-access-client-in-passport-again-and-again

makefileのinitに以下のコマンドを追加した→削除

docker-compose exec app php artisan passport:install

laravelのアクセスがやったら重いんですけど

Docker for Mac限定の問題。
色々試しましたけど、最終的には直接php artisan serveすることで解決。

dockerのvolumeのマウントが原因。 :delegatedをつけたら少し軽くなった。

https://wonwon-eater.com/mac-docker-performance/

/api/userにアクセスしてもなにも起こらない

忘れがち

なお、JSONが返されるのはLaravel5.3のデフォルトではヘッダーにX-Requested-With: XMLHttpRequestがある、またはAcceptヘッダーでjsonが指定されている場合です。(fetchにネイティブ対応しているブラウザではそれを使用した場合明示的にAcceptを指定してやらないと前者の対象にはならずにリダイレクトが発生し200になります。宇宙。)
https://blog.hinaloe.net/2016/09/15/try-passport-laravel-5-3/

Acceptヘッダとauth Bearerヘッダを追加して再確認、うまくいった。

よく考えたら、backendフォルダ内で直接laravel動かしたらいいんじゃね?

→動いた。ローカルなので応答も早い。
DBの接続情報を変更する必要がある。Dockerコンテナは環境変数を変更しているため。

DB_DATABASE=laravel_local
DB_USERNAME=phper
DB_PASSWORD=secret

.envの更新を反映させるにはコマンドが必要

php artisan cache:clear
php artisan config:cache

passportやめたい

composer.jsonを編集して composer update

https://ja.coder.work/so/laravel/545565

認証APIをjwtで作り直し

参考
https://re-engines.com/2019/06/03/laravelで認証apiを作る/
うごかないなんでや
https://github.com/tymondesigns/jwt-auth/issues/1484

replace
'expires_in' => auth()->factory()->getTTL() * 60
by
'expires_in' => auth('api')->factory()->getTTL() * 60

うごいた。ここでtokenの有効期限も設定できるっぽい

認証APIにregisterを移植した

バリデーションも合わせて実装した

userのcrudをAPIで実装する

参考
https://qiita.com/sutara79/items/cd4371b246b44a2cf87f

putのrequestが空っぽなんなんでや??

postmanの設定だった

https://qiita.com/wjtnk/items/eb2ddcc0642dc3197671

PUT時にuserが見つからない場合に出るModelNotFoundExceptionエラーをカスタマイズする

abortの第一引数にresponceを渡さないとstach traceが出るみたいだぞ?

https://laraveldaily.com/laravel-api-404-response-return-json-instead-of-webpage-error/

その他、細かく設定する場合
https://qiita.com/sakuraya/items/af38c4cf84459a8b5967

基本形

Handler.php
    public function render($request, Throwable $exception)
    {
        if ($exception instanceof ModelNotFoundException) 
        {
          abort(response()->json(['message' => 'not found'], 404));
        }
        return parent::render($request, $exception);
    }

コードフォーマッタとリンターがないので入れる

https://www.ritolab.com/entry/188#aj_3

開発用のメールサーバー

ブラックホールメールサーバーのDockerコンテナを開発用に立てる
http://127.0.0.1:1080 で送信したメールが全部見れる。なんて便利な世の中や・・

https://qiita.com/kanemu/items/1f2da063c7e5b5477502

seederでダミーデータを適当に作る。マスタデータも作れる。

https://qiita.com/shosho/items/b69db263a494edfe3b21

Route::resources で全部使わないよ!って場合

https://qiita.com/sympe/items/9297f41d5f7a9d91aa11

もはや個別にmodel,controllerとか作らなくても良くない?全部まとめて作れるで

https://qiita.com/niisan-tokyo/items/9c799989cb535489f201

管理画面をlaravel-adminで作る

https://laravel-admin.org/docs/#/
https://tac-blog.tech/index.php/2018/09/29/laravel-admin-add-crud/

管理設定をmigrationできるようにseederに追加する

https://qiita.com/ntm718/items/5ea29ee70b50320352c4

基本のDBクエリビルド

https://www.ritolab.com/entry/93#aj_11_1

Laravel debaggerを入れる

https://qiita.com/sutara79/items/9fd442a81001842aeba1

apiResource

https://www.webopixel.net/php/1526.html

純粋なAPIで使用するCRUDの場合はapiResourceを使用します。
Route::apiResource('users', 'UsersController');
これで、index,store,show,update,destroyが使用できるようになります。
複数のコントローラーをまとめて指定する場合はapiResourcesを使用します。
Route::apiResources([
'tasks' => 'Api\TaskController',
'users' => 'Api\UserController'
]);

api用のデータ整形、リレーションデータの追加。

https://yuhodev.hatenablog.com/entry/2019/11/27/121500

apiCollectionの作成

php artisan make:resource UserCollection
php artisan make:resource User

JsonResouseに追加したい

    public function toArray($request)
    {
        $data = parent::toArray($request);

        $data["staff"] = StaffResource::collection($this->staff);
        $data["doctor"] = DoctorResource::collection($this->doctor);

        return $data;

    }

apiのセキュリティ 自分のデータ以外は編集できてはいけない

Policyの設定を行う。

https://nakka-k.hatenablog.com/entry/2019/06/07/140758

$this->authorize('update', $user);

APIで返却するJSONを共通フォーマットにしたい

https://waterfalls.hatenablog.com/entry/2019/08/24/012913

Modelでバリデーションをする

https://qiita.com/kd9951/items/c06d107aa4018295aa25

中間テーブルを通した多対多リレーション

https://php-junkie.net/framework/laravel/many_to_many/

Tips: primarykeyを使わない場合
https://www.yuulinux.tokyo/15552/#i-5

多対多リレーション時のデータ修正・追加

例えばusers-> user_role -> roles というふうに
中間テーブルを経由してroleを管理している場合、roleを変更したい場合は

roleテーブルのidを配列で渡すだけで良い
roles = [1,2,3]

$user->roles()->sync($request->roles);

神か!!!

https://nextat.co.jp/staff/archives/200

この辺から自力で調べつつ、公式リファレンスを読めば大体構築イメージがつかめるようになってきました。

概ね3日でLaravelの基本は理解できたと言えます。
素晴らしいフレームワークですが、レイヤーも多いため、基本のSQLの知識も必要、PHPの基礎も。

やっぱ基礎って大事だな、と思いました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

What's the Laravel?? "Laravelについて簡単に説明"

Hi, tehere!

プログラミング歴3ヶ月のMackeyがLaravelとは何か、
備忘録もかねてLaravel初心者目線で説明いたします!

1. Laravelとは?

"Laravel"とはphpのフレームワークのことです。
イメージとしては、「骨組み」、「枠組み」、「構造」と捉えて頂けたらと思います。
このフレームワークを利用することにより、目的のアプリケーションなどをゼロから開発する必要がなくなります。クラスやメソッドなどが多く用意されているため、開発工程を大幅に短縮できるのです!

2. Laravelでできることは?

Google Chrome, Internet Explorer, Safariなど、インターネットを介して情報を見たり入力したりするシステムなら、ほとんど作成可能だと思います。
また、多機能なフレームワークが揃っているのでWebアプリケーション全般に向いていると言えるのではないでしょうか。
※因み筆者はLaravelフレームワークを利用して、掲示板を作成しています。

3. MVCモデル

Laravelでは「MVCモデル」というものを採用しています。
処理をModel(データ処理)、View(画面表示)、Controller(全体の制御)の各機能に分けて、パーツ(機能)ごとに開発を行っていくものです。
※簡易的ではありますが、機能ごとの動きを図にしてみたので参考までに。
スクリーンショット 2020-07-17 21.07.21.png

4. パッケージ管理

パッケージ管理に関してはComposerを使います。
Composer(パッケージ管理)とは、開発をする際に必要となるライブラリやパッケージを管理・インストールするものです。コマンド1つで必要なものが全て揃うものです。

5. Eloquent ORM と Migration

Webアプリケーションの開発ではデータベースの操作が必然的に付き物です。
データベースで保存したデータを取得して表示したり、データを更新して常に新しい状態を保たせる操作があります。
Eloquent ORMとは、データベースとモデルにリレーションを持たせて、データを柔軟に扱えるようにする機能です。
Migrationは、テーブル定義の仕組みを持っており、テーブル定義に対する変更内容が書かれるファイルが生成されることでデータベースの変更や管理が簡単にできます。Modelを作成する際にmigrationを使います。

6. 終わり

Laravelに関する説明を簡単にしてみました。
近日中に”実装の流れ”についても初心者目線で簡単に説明できたらと思います!!
拝読ありがとうございました:)

Bye!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

What is Laravel?"Laravelについて簡単に説明"

Hi, tehere!

プログラミング歴3ヶ月のMackeyがLaravelとは何か、
備忘録もかねてLaravel初心者目線で説明いたします!

1. Laravelとは?

"Laravel"とはphpのフレームワークのことです。
イメージとしては、「骨組み」、「枠組み」、「構造」と捉えて頂けたらと思います。
このフレームワークを利用することにより、目的のアプリケーションなどをゼロから開発する必要がなくなります。クラスやメソッドなどが多く用意されているため、開発工程を大幅に短縮できるのです!

2. Laravelでできることは?

Google Chrome, Internet Explorer, Safariなど、インターネットを介して情報を見たり入力したりするシステムなら、ほとんど作成可能だと思います。
また、多機能なフレームワークが揃っているのでWebアプリケーション全般に向いていると言えるのではないでしょうか。
※因み筆者はLaravelフレームワークを利用して、掲示板を作成しています。

3. MVCモデル

Laravelでは「MVCモデル」というものを採用しています。
処理をModel(データ処理)、View(画面表示)、Controller(全体の制御)の各機能に分けて、パーツ(機能)ごとに開発を行っていくものです。
※簡易的ではありますが、機能ごとの動きを図にしてみたので参考までに。
スクリーンショット 2020-07-17 21.07.21.png

4. パッケージ管理

パッケージ管理に関してはComposerを使います。
Composer(パッケージ管理)とは、開発をする際に必要となるライブラリやパッケージを管理・インストールするものです。コマンド1つで必要なものが全て揃うものです。

5. Eloquent ORM と Migration

Webアプリケーションの開発ではデータベースの操作が必然的に付き物です。
データベースで保存したデータを取得して表示したり、データを更新して常に新しい状態を保たせる操作があります。
Eloquent ORMとは、データベースとモデルにリレーションを持たせて、データを柔軟に扱えるようにする機能です。
Migrationは、テーブル定義の仕組みを持っており、テーブル定義に対する変更内容が書かれるファイルが生成されることでデータベースの変更や管理が簡単にできます。Modelを作成する際にmigrationを使います。

6. 終わり

Laravelに関する説明を簡単にしてみました。
近日中に”実装の流れ”についても初心者目線で簡単に説明できたらと思います!!
拝読ありがとうございました:)

Bye!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Laravel】モデルから配列やJsonにキャスト時、必要な属性だけ表示させる

モデルのキャスト時に、パスワードなど表示したくない属性がある。
反対に、表示したい属性のみを指定したいときもある。
その時はモデルのプロパティの$hiddenもしくは$visibleを使えばOK

User.php
protected $hidden = [
    'password'
];

役割

プロパティ 役割
$hidden 登録項目は JSON に含めない。
$visible 登録項目は JSON に含める。

場合によって使い分けましょう

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

bladeでDBを扱う

bladeでDBに保存されているデータを呼び出したい

今回はUniversityと言うテーブルに保存されているlogo_urlというカラムをとってきたいと言う内容です。

blade.php
<img src="{{\App\Models\University::first()->logo_url}}" alt="logo">

上記のようにModelを使って取得できます。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laradock にログイン機能(laravel/ui)を導入する

概要

以下のような方を対象としています。

  • Laradock をすでに導入済
  • Laravel 6 のプロジェクトを作成済
  • ユーザーログイン機能を導入したい

自身のアウトプット兼メモ用で作成しました。

導入方法

はじめに、laradock ディレクトリに移動します。
その後、以下の流れで入力していきます。

1. ワークスペースに入る

docker-compose exec  workspace bash

2. laravel / ui のインストール

composer require laravel/ui:^1.0 --dev

3. ログイン・ユーザー登録機能の作成

今回はBootstrapを用いた形にします。

php artisan ui bootstrap --auth

4. パッケージのインストール

npm install

5. インストールパッケージのビルド

npm run dev

6. ワークスペースから出る

exit

参考

Laravel 6.x JavaScriptとCSSスカフォールド
ログイン機能の作成(laravel6)

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Debugbar をインストール

Debugbarを使う。

まずは、Debugbarをインストールします。

$ composer require --dev barryvdh/laravel-debugbar

次にDebugbarの設定ファイルを作成します。

$ php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"

ここで作成された環境設定ファイル「.env」に、設定情報を記載します。

以下のいずれかを追記する。

DEBUGBAR_ENABLED=null  # デフォルト。APP_DEBUGに応じて決まる
DEBUGBAR_ENABLED=true  # 必ず有効
DEBUGBAR_ENABLED=false # 必ず無効

これでデバッグを行う準備ができました。
デバッグしたい場所に次のコードを記述すればデバッグすることができます。

 \Debugbar::info(確認したい変数など);

これでOKです!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel クエリビルダを用いてNULLを判定する

目的

  • クエリビルダを用いたNULLの判定方法をまとめる

実施環境

  • ハードウェア環境
項目 情報
OS macOS Catalina(10.15.5)
ハードウェア MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports)
プロセッサ 2 GHz クアッドコアIntel Core i5
メモリ 32 GB 3733 MHz LPDDR4
グラフィックス Intel Iris Plus Graphics 1536 MB
  • ソフトウェア環境
項目 情報 備考
PHP バージョン 7.4.3 Homwbrewを用いて導入
Laravel バージョン 7.0.8 commposerを用いてこちらの方法で導入→Mac Laravelの環境構築を行う
MySQLバージョン 8.0.19 for osx10.13 on x86_64 Homwbrewを用いてこちらの方法で導入→Mac HomebrewでMySQLをインストールする

前提環境

  • 先に記載した実施環境に近い環境で実施すること。

前提情報

読後感

  • NULLを用いた条件を使ってクエリビルダでデータの取得をすることができる様になる。

  • 判定対象カラムがNULLであるレコードのみ取得する。

    $query = モデルファイル名::select('*');
    $query->whereNull('判定対象カラム名');
    $query->get();
    
  • 判定対象カラムがNULLではないレコードのみ取得する。

    $query = モデルファイル名::select('*');
    $query->whereNotNull('判定対象カラム名');
    $query->get();
    

具体例

  • usersテーブルの「user_name」カラムがNULLのレコードのみ取得する際は下記の様になる。
  • usersテーブルのモデルファイル名はUser.phpとして、アプリ名ディレクトリ/app直下に存在するものとする。当該モデルファイルのuse宣言はすでに実施されている物とする。

    $query = User::select('*');
    $query->whereNull('user_name');
    $query->get();
    
  • usersテーブルの「user_name」カラムがNULLではないレコードのみ取得する際は下記の様になる。

  • usersテーブルのモデルファイル名はUser.phpとして、アプリ名ディレクトリ/app直下に存在するものとする。当該モデルファイルのuse宣言はすでに実施されている物とする。

    $query = User::select('*');
    $query->whereNotNull('user_name');
    $query->get();
    

参考文献

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

composer"Updating dependencies (including require-dev)"で固まり困っている人へ

//駄文を許してください
//筆者はcomposerコマンドを使ってプロジェクトを作成しています

mac ver 10.15.6
composer ver 1.10.9

ことの発端は...

とある日,laravelを楽しもうとプロジェクトを作成した時であった...

何分待ってもprojectが作成されないのである。

Creating a "laravel/laravel" project at "----" <-ここで固まる

updating dependencies <-composer updateしていた時はここで

行動

phpやnodeなど手当たりしだいにアップデート->効果なし

composerのコマンドを打ったときの挙動だけがおかしいことに気づく

composerのアンインストールを考えたができなかった...

解決への道

参考

https://iiiso.ti-da.net/e8647248.html
https://stackoverflow.com/questions/17138319/composer-freezing-when-installing-symfony-vendors
https://github.com/composer/composer/issues/4839

公開鍵

https://composer.github.io/pubkeys.html

言われた通りに、diagnoseをコマンドの尻に付けてみる
->どうやら同じような症状である.

composer self-update --update-keys

を打ち,公開鍵をコピペしてみる.

その後、composerコマンドが通常通りに使えるようになった.
実際のところなぜこのような問題が起こったのか不明であり本質的には何が起こったのか不明であるため原因究明に力を注ぐ。

細かなこと

  • 初めて記事を制作したので細かなミスがあっても許してください
  • 解決?後再度プロジェクトを作成してみると、ターミナル上では余り変化がないので10分程度待ってみましょう.
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む