20201028のlaravelに関する記事は5件です。

Laravel:検索機能をつける方法

【概要】

1.結論

2.どのようにコーディングするか

3.開発環境

1.結論

$変数 = モデルクラス :: where(カラム名 , $request->request)->all or find or first();

をつける!

2.どのようにコーディングするか

app/Http/Controllers/PersonController.php
    public function search (Request $request)
    {
        $item = User::where('name',$request->input)->first(); #---❶
        $param = ['input' => $request->input, 'item' => $item]; #---❷
        return view('user.find', $param); #---❸
    }


❶:Userテーブルで、whereを使用し、nameカラムを指定しています。Requestは、クライアントから送られてくる情報を含んでおり$request->inputでファイル以外のデータを受け取っています。firstは条件に引っかかった最初だけを拾っています。
❷:paramの中にinput, itemを入れて連想配列にしています。
❸:user/findはgetした時にsearchはpostで処理しています。getの際に、paramの情報も入っています。

上記で記載したものをコントローラーに処理させたいので、ルーティングします。

routes/web.php
Route::get('user/find' , 'App\Http\Controllers\PersonController@find' );
Route::post('user/find' , 'App\Http\Controllers\PersonController@search' );

*部分検索についてはしっかり学習してから、また投稿します。

3.開発環境

PHP 7.4.10
Laravel 8.9
Apache 2.4.41
Mysql 5.6.47
Sequl Pro 1.1.2

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

【超自分用】Laravelのページネーションのまとめ【随時更新予定】

導入

以下のコマンド導入可能

php artisan vendor:publish --tag=laravel-pagination

resources/views/vendor/pagination/の中にいろいろテンプレファイルができればおっけー

実装例

Contoroller側

xxxContoroller.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Book;

class BookListController extends Controller
{
    public function index()
    {
        $books = Book::join('users', 'books.create_user', '=', 'users.id')
            ->select('books.*', 'users.id', 'users.name')
            ->orderByRaw('books.created_at DESC')
            ->paginate(10);

        return view('bookList', ['books' => $books]);
    }
}

いろいろjoinとかしてますが、一旦無視してください。
>paginate(10);で1ページに表示する数を設定

view側

                @if (count($books) > 0)
                <table class="table table-striped task-table">
                    <thead>
                        <th>書籍タイトル</th>
                        <th>投稿者</th>
                        <th>投稿日</th>
                    </thead>
                    <tbody>
                        @foreach ($books as $book)
                        <tr>
                            <td class="table-text">
                                <div>{{ $book->title }}</div>
                            </td>
                            <td class="table-text">
                                <div>{{ $book->name }}</div>
                            </td>
                            <td class="table-text">
                                <div>{{ $book->created_at }}</div>
                            </td>
                        </tr>
                        @endforeach
                    </tbody>
                </table>
                {{ $books->links('vendor.pagination.bootstrap-4') }}
                @endif

いろいろごちゃごちゃ書いてますが無視してください
{{ $books->links('vendor.pagination.bootstrap-4') }}でブートストラップのデザインが適用可能
導入した際のファイルが実際のスタイルを記述している
image.png

他にもいろんなテンプレがあるので試してみてください
もちろん自分で書き換えることも可能

まとめ

めっちゃ便利。忘れたくない

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

MAMP環境でLaravelをインストールして画面表示するまで... 【2020年10月現在】

Laravelを以前にチーム開発で触ったことがあったのですが、初学者の中でもさらに初学者だったので頭の中が「?????」になっていました。最近はPHPだけの開発をしていたのですが時々息抜きでフレームワークを使ってみようと。

まず、2020年現在PHPのフレームワークで最も人気な「Laravel」を使うためにMACのPCで使えるよう環境構築をしてみました!その流れをご説明します。

Laravelをインストールをするために参考になったもの

PHPを学ぶのに大変役に立つ無料動画

https://www.youtube.com/watch?v=cO9Kfh3lypg&list=PLCyDm9NTxdhLnA4tH5ToQR1K1LcWIAdOa

わかりやすく日本語で説明されていたサイト

https://www.ritolab.com/entry/22

フレームワークとは…

まずはフレームワークを使うメリットを知っておく必要がありますね。一番気になることは「素早くWebアプリを作れる(基本的な機能が搭載済み)」ですね。他にもまとめてみると以下の点が良き。

  • 開発時間の短縮へ
  • ルールが決まっているから複数人の開発が便利
  • ルールがあるから開発後のメンテナンスが楽
  • セキュリティ機能が備わっているから質の高い開発が可能

2020年、phpの一番人気フレームワークはLaravel。CakePHPも求人が二番目に多いので良いよ。初心者に簡単に使えるフレームワークとしては、実はCodeIgniterがおすすめ。

Laravelを学ぶために

日本語公式サイトを見ましょう!
http://laravel.jp

理解すべきものとして以下の三つがあります。

  • MVCモデル(プログラムの構成)
  • ORM(DB操作)
  • Artisanコマンド

Laravelを使えるようにするための手順

先ほどもご紹介した動画を見ながら環境構築できます☺️。細かく説明をしている素晴らしい教材ですが、わからない点は一つ一つ調べながら取り組むとよりGOOD!

https://www.youtube.com/watch?v=yaitzPzBzuI&list=PLCyDm9NTxdhLnA4tH5ToQR1K1LcWIAdOa&index=2

開発環境構築とは...

アプリの実行環境(Laravelが動く)を作ること。Webサービスを公開するには以下のものが必要です。

  1. アプリ
  2. ミドルウェア(PHP Apache MySQLなど)
  3. OS(Mac Windows Linuxなど)
  4. ハードウェア/ネットワーク(サーバー機器など)

2~4(総称をインフラと呼ぶ)を準備することが実行環境構築となります。

開発環境構築方法の種類

「ローカルPCに構築」「仮想環境を立てて構築」する方法があります。

ローカルPCに構築するなら、MAMPComposerが必要ですね。LaravelはMAMPだけでなくComposerがないと難しいので使いましょう!

仮想環境を立てて構築する方法については、例として以下のものがあります。とりわけ開発現場では仮想環境を使うことが多いです。

  • Vagrant + VirtualBox
  • Docker

これからローカルPCに構築する方法をご紹介しますね。

ローカルPCに構築する方法

Composerとは...

サイトがあります。
https://getcomposer.org

これは、PHPの”パッケージ”管理ツールです。

PHPの便利パーツ(ライブラリ)を一括でインストールして使えるよう管理してくれます。複数人で開発している時は、他の人にインストールしたものを渡せばすぐ使えます!

Laravelのインストール手順

MACのパソコンにMAMPをインストールした状態で、ターミナルにて以下のコマンドを打っていきます。

MAMP内のhtdocsへ移動(cd)します。

cd /Applications/MAMP/htdocs/

composerのインストーラーをhtdocs内にダウンロードする

curl -sS https://getcomposer.org/installer | php

composer.pharを /usr/local/bin/composer に移動。composerというコマンドをどこからでも使えるようにする」を実行します。

sudo mv composer.phar /usr/local/bin/composer

sudoは管理者ユーザとして実行するという意味。mvは移動するということ。

composerが入ったかどうかの確認します。

composer -V

さらに続きます...

composerを使ってLaravelのファイルを作るよという意味。blogというディレクトリ(ファイル)の作成します。

composer create-project laravel/laravel --prefer-dist blog

上記のblogというところは自分でファイル名を設定しましょう!これでディレクトリの作成が完成です。さらにLaravelに必要な一式もダウンロード完了!

--prefer-dist の部分は...

prefer-sourceの逆のコマンドです。可能であればdistからインストールすべし。これは、ビルドサーバーなど、一般的にベンダーのアップデートを実行しないようなケースでは、インストールを大幅に高速化することが可能に。

もしLaravelバージョンを指定してダウンロードしたい場合...

laravel/laravelの部分に修正をします。
例えばバージョン6 (LTS Long Term Support の略。つまり長期サポート)を希望するなら

"laravel/laravel=6.*"

と書く。

さらに続きます!

Laravelをインストールしたら

作成したblogファイルに移動

cd blog

現在いるファイルの中身をチェックします。

ls

それから...

権限を変更します。

chmod -R 777 storage

上記のコマンドは

storageを777(一番緩いものにする)という意味です。storage とは、ファイル操作に使います。これで、保存先を意識することなくファイルの操作が可能に。

https://reffect.co.jp/laravel/laravel-storage-manipulation-master

chmod -R 777 bootstrap/cache

chmod 777とは、chmod (change mode)の略。 ファイルを誰でも「読む・書く・実行」が可能になります。Laravelには独自のキャッシュ機構があり、デフォルトでここにキャッシュが作成されていきます。

https://developers.gnavi.co.jp/entry/laravel/matsuyan

最後に

MAMPのDocument Rootを作ったファイルの中の「public」に設定します。理由は、publicにLaravelのトップ画面の設定があるから。これでブラウザーにて表示できます!お疲れ様です。

2020-10-27 15.06のイメージ 2.jpeg

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

Laravel モデル

Model

php artisan make:model Test

Test.phpモデルのファイルが作成されます。

php artisan make:model Models/Test

Modelディレクトリの下にTest.phpファイルが作成されます。

php artisan make:model Models/Test -mc

-mcをつける事によってマイグレーションファイルとコントローラーを作成する事ができます。

php artisan migrate

このコマンドでデータベースにテーブルを作成できます。
スクリーンショット 2020-10-28 16.13.24.png

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

Laravel8 CRUD処理を使った投稿アプリを作成する その5 投稿詳細画面の作成

目的

  • 投稿された内容の詳細を表示するページを作成する

実施環境

  • 筆者の実施環境を記載する。
  • ハードウェア環境
項目 情報
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.8 Homebrewを用いてこちらの方法で導入→Mac HomebrewでPHPをインストールする
Laravel バージョン 8.6.0 commposerを用いてこちらの方法で導入→Mac Laravelの環境構築を行う
MySQLバージョン 8.0.19 for osx10.13 on x86_64 Homwbrewを用いてこちらの方法で導入→Mac HomebrewでMySQLをインストールする

前提条件

  • その1の記事の内容が完了していること。

前提情報

概要

  1. ルーティング情報の記載
  2. コントローラファイルの記載
  3. ビューファイルの作成と記載
  4. 確認

詳細

  1. ルーティングの記載

    1. laravel8_crudディレクトリで下記コマンドを実行してルーティングファイルを開く。

      $ vi routes/web.php 
      
    2. 開いたファイルに下記の行を追記する。

      laravel8_crud/routes/web.php
      Route::get('/detail/{content_id}', [ContentController::class, 'detail'])->name('detail');
      
    3. 追記後のルーティングファイルの内容を下記に記載する。

      laravel8_crud/routes/web.php
      <?php
      
      use Illuminate\Support\Facades\Route;
      use App\Http\Controllers\ContentController;
      
      /*
      |--------------------------------------------------------------------------
      | Web Routes
      |--------------------------------------------------------------------------
      |
      | Here is where you can register web routes for your application. These
      | routes are loaded by the RouteServiceProvider within a group which
      | contains the "web" middleware group. Now create something great!
      |
      */
      
      Route::get('/', function () {
          return view('welcome');
      });
      
      Auth::routes();
      
      Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
      
      Route::get('/input', [ContentController::class, 'input'])->name('input');
      Route::post('/save', [ContentController::class, 'save'])->name('save');
      Route::get('/output', [ContentController::class, 'output'])->name('output');
      // 下記を追記する
      Route::get('/detail/{content_id}', [ContentController::class, 'detail'])->name('detail');
      
  2. コントローラファイルの記載

    1. laravel8_crudディレクトリで下記コマンドを実行して作成したコントローラファイルを開く。

      $ vi app/Http/Controllers/ContentController.php 
      
    2. 下記の内容をクラス内に追記する。

      laravel8_crud/app/Http/Controllers/ContentController.php
      public function detail($content_id)
      {
          $content_get_query = Content::select('*');
          $items = $content_get_query->find($content_id);
      
          return view('contents.detail', [
              'item' => $item,
          ]);
      }
      
    3. 追記後のコントローラファイルの内容を下記に記載する。

      laravel8_crud/app/Http/Controllers/ContentController.php
      <?php
      
      namespace App\Http\Controllers;
      
      use Illuminate\Http\Request;
      use App\Models\Content;
      
      class ContentController extends Controller
      {
          public function input()
          {
              return view('contents.input');
          }
      
          public function save(Request $request)
          {
              $input_content = new Content();
              $input_content->content = $request['content'];
              $input_content->save();
              return redirect(route('output'));
          }
      
          public function output()
          {
              $contents_get_query = Content::select('*');
              $items = $contents_get_query->get();
      
              return view('contents.output', [
                  'items' => $items,
              ]);
          }
      
          // 下記を追記する
          public function detail($content_id)
          {
              $content_get_query = Content::select('*');
              $items = $content_get_query->find($content_id);
      
              return view('contents.detail', [
                  'item' => $item,
              ]);
          }
          // 上記までを追記する
      }
      
  3. ビューファイルの作成と記載

    1. laravel8_crudディレクトリで下記コマンドを実行してビューファイルを作成する。

      vi resources/views/contents/detail.blade.php
      
    2. 作成して開いたビューファイルに下記の内容を記載する。

      laravel8_crud/resources/views/contents/output.blade.php
      <h1>detail</h1>
      
      <p>投稿ID: {{$item['id']}}</p>
      <p>投稿内容: {{$item['content']}}</p>
      <p>投稿時間: {{$item['created_at']}}</p>
      
    3. laravel8_credディレクトリで下記コマンドを実行して投稿内容の一覧ページのビューファイルを開く。

      $ vi resources/views/contents/output.blade.php 
      
    4. 開いたビューファイルの<p>{{$item['content']}}</p>の次の行に下記の内容を追記する。

      laravel8_crud/resources/views/contents/output.blade.php
      <a href="{{route('detail', ['content_id' => $item['id']])}}">詳細</a>
      
    5. 追記後のビューファイルの内容を下記に記載する。

      laravel8_crud/resources/views/contents/output.blade.php
      <h1>output</h1>
      
      @foreach ($items as $item)
          <hr>
          <p>{{$item['content']}}</p>
          {{-- 下記を追記する --}}
          <a href="{{route('detail', ['content_id' => $item['id']])}}">詳細</a>
      @endforeach
      
  4. 確認

    1. laravel8_crudディレクトリで下記コマンドを実行してローカルサーバを起動する。

      $ php artisan serve
      
    2. ブラウザで下記にアクセスする。

    3. 下記の様に投稿内容が表示され「詳細」のリンクがあることを確認する。(投稿内容は下記画像と一致しなくて良い)

      127_0_0_1_8000_output.png

    4. 「詳細」のリンクをクリックすると下記のページが開くこと、各種データが正常に表示されていることを確認する。問題無く表示されれば本記事の作業は完了である。

      127_0_0_1_8000_detail_2.png

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