PCS開発チーム

フィルター
Laravel Tips bot

質問:

Laravelをインストールするための基本的な手順は何ですか?

回答:

Laravelをインストールするには、以下の手順を行います:

  1. Composerのインストール:
    LaravelはComposerというPHPの依存管理ツールを使用してインストールします。まず、Composerをインストールします。公式サイトからダウンロードしてインストールしてください。

    curl -sS https://getcomposer.org/installer | php
    mv composer.phar /usr/local/bin/composer
    
  2. Laravelプロジェクトの作成:
    Composerを使って新しいLaravelプロジェクトを作成します。以下のコマンドを実行します:

    composer create-project --prefer-dist laravel/laravel プロジェクト名
    
  3. 環境設定:
    プロジェクトディレクトリに移動し、.envファイルを設定します。このファイルはデータベースなどの環境情報を設定します。

    cd プロジェクト名
    cp .env.example .env
    php artisan key:generate
    
  4. サーバーの起動:
    開発サーバーを起動して、アプリケーションが正しく動作しているか確認します。

    php artisan serve
    

以上の手順を行うことで、基本的なLaravelのインストールが完了し、開発を始める準備が整います。

PCS開発チーム

Laravel11 ドキュメントに書いてないbootstrap/app.phpの使い方

Laravel Tips bot

laravel/laravel v11.0.8

https://github.com/laravel/laravel/releases/tag/v11.0.8

次のリリースノートの要約です:

  • @princejohnsantillan によるプルリクエスト(https://github.com/laravel/laravel/pull/6400)で、.phpactor.json ファイルが .gitignore に追加されました。
PCS開発チーム

Vue2からVue3へのバージョンアップ作業

古くからのLaravelプロジェクトではVueの更新も面倒な作業。
規模が大きいとLaravel本体よりも大変。

  1. Options APIのままでいいのでとにかくVue3に上げる。
  2. Composition APIなどVue3らしい使い方に変えていく。
  3. TypeScriptに変える。

バージョンアップの苦労さえ乗り越えればVue3時代の使い方ができる。慣れれば使いやすい。
FolioやVoltが生まれたのもVueからの影響だろうってことも分かる。

自分のLaravelプロジェクトでは何年か前にVue3にしてるけど久しぶりにバージョンアップ作業するとやっぱり大変。
小規模ならLivewireに置き換えたほうが早い。

PCS開発チーム

Laravel Sanctum APIトークン認証のサンプル

PCS開発チーム

Livewire Voltでレイアウトにデータを渡す方法

LivewireとVoltのコードを調べまくってやっと分かった。

バージョン

  • Laravel11
  • Livewire 3.4
  • Volt 1.6

今の方法は分かりやすくないので将来のバージョンでは変わってる可能性が高い。

functional Voltの場合

rendering()とかlayoutData()とか分かりやすい機能が用意されてないのでmount()boot()booted()でComponentのAttributeCollectionに直接追加する強引な方法しかなかった。

// functional Volt

use Livewire\Attributes\Layout;
use Livewire\Volt\Component;
use function Livewire\Volt\mount;

mount(function () {
    /** @var Component $this */
    $this->attributes->add(new Layout('layouts.app', ['foo' => 'test']));
});
// layout blade

{{ $foo ?? '' }}

コンポーネント内のプロパティも渡せる。

// functional Volt

use Livewire\Attributes\Layout;
use Livewire\Volt\Component;
use function Livewire\Volt\mount;
use function Livewire\Volt\state;

state(['foo' => 'test']);

mount(function () {
    /** @var Component $this */
    $this->attributes->add(new Layout('layouts.app', ['foo' => $this->foo]));
});

ルートパラメーターも渡せる。

// routes/web.php

use Livewire\Volt\Volt;

Volt::route('user/{user}', 'pages.user');
// functional Volt

use App\Models\User;
use Livewire\Attributes\Layout;
use Livewire\Volt\Component;
use function Livewire\Volt\mount;

mount(function (User $user) {
    /** @var Component $this */
    $this->attributes->add(new Layout('layouts.app', ['user' => $user]));
});
// layout blade

{{ $user->name ?? '' }}

mount()boot()booted()かはLivewireのLifecycle hooksの違いでしかないので最初にデータを渡すだけならどれでも結果は同じ。

Class-based Voltなら簡単

普通のLivewireの使い方とほとんど同じ。

// Class-based Volt

use Illuminate\View\View;
use Livewire\Attributes\Layout;
use Livewire\Volt\Component;

new #[Layout('layouts.app')] class extends Component {
    //

    public function rendering(View $view): void
    {
        $view->title('...');

        $view->layoutData(['foo' => 'test']);
    }
PCS開発チーム

「スリム化したLaravel11」と「スリム化してないLaravel11」を行き来してるとスイッチングコストが高い

全部スリム化したいけどそうすると「Laravel12以降もスリム化せずにバージョンアップして使い続けられるか」の確認ができない。
しばらくはこのままにしておく。

Laravel Tips bot

laravel/jetstream v5.1.0

https://github.com/laravel/jetstream/releases/tag/v5.1.0

次のリリースノートの要約は以下の通りです:

  • @alnutile による、プライマリーボタンに「Disabled」クラスを追加する変更が行われました(https://github.com/laravel/jetstream/pull/1482)。
  • @gqrdev による、バナーのスタイリングを更新し、警告バナー機能を追加する変更が行われました(https://github.com/laravel/jetstream/pull/1486)。
Laravel Tips bot

laravel/laravel v11.0.7

https://github.com/laravel/laravel/releases/tag/v11.0.7

Laravelの次のリリースノートの要約は以下の通りです:

  • @u01jmg3によって、古くなったドライバーオプションが削除されました。詳細はこちらのプルリクエストで確認できます:https://github.com/laravel/laravel/pull/6395
Laravel Tips bot

laravel/framework v11.7.0

https://github.com/laravel/framework/releases/tag/v11.7.0

以下は、Laravel 11.x のリリースノートの要約です:

  • SesV2Transport が正しい EmailTags 引数を使用するよう修正されました。
  • データベースに関するナイトリーワークフローが追加されました。
  • "min" および "max" ルールのコメントが更新されました。
  • ClassMakeCommandTest.php の名前空間が修正され、PSRが改善されました。
  • ビューコンポーネントのテストカバレッジが向上しました。
  • Rule::array() メソッドが導入されました。
  • コレクションの pluck メソッドのドックブロックが修正されました。
  • 非焼成 enum および空文字列リクエストの処理に関するテストが追加されました。
  • blank と filled が stringable をサポートするようになりました。
  • 高比率の画像の比率検証が修正されました。
  • e メソッドが int|float をサポートするようになりました。
  • リリースノートが追加されました。
  • Stringable が Symfony のインターフェースであることが明記されました。
  • Str::camel のテストが追加され、テストカバレッジが向上しました。
  • ?? 演算子(Null Coalescing Operator)の使用が導入されました。
  • アプリケーションのデフォルトのキャッシュされたルートのローディングをオーバーライドする機能が追加されました。
  • MySQL 用の ->whereJsonOverlaps() が追加されました。
  • ValidatedInputInteractsWithInput メソッドが追加されました。
  • PasswordResetLinkSent イベントが追加されました。

これらの変更は、Laravel フレームワークの機能強化とバグ修正に寄与しています。

PCS開発チーム

Laravel11 フォロー・フォロワーのリレーション

https://github.com/pop-culture-studio/follow-sample

記事にするまでもないほど簡単すぎたのでサンプルプロジェクトだけ。

Laravel Tips bot

Laravelでの効率的なデバッグを行うためには、Laravel Telescopeを使用すると良いでしょう。Telescopeはリクエスト、コマンド、ジョブ、例外などのアプリケーションの実行情報を簡単に確認できるツールです。これを利用することで、開発中の問題を迅速に特定し、解決することが可能になります。

Laravel Tips bot

livewire/livewire v3.4.12

https://github.com/livewire/livewire/releases/tag/v3.4.12

このリリースノートでは、Livewireのいくつかの変更点が記載されています。主な変更内容は以下の通りです:

  • 特定の機能の削除や追加、例えば「yo」の削除や「request hook」の追加。
  • Laravel 10.xへの依存関係の修正や、モデルのnull設定を許可しない問題の修正。
  • コンポーネントでの「paginationSimpleView()」メソッドのサポート追加。
  • ファイルアップロードやイベントリスニング、ナビゲーション進行バーのアニメーションなどの機能修正。
  • ドキュメントの明確化や、テストのリファクタリング。
  • 新しいコントリビューターが複数名参加し、初めての貢献を行いました。

これらの変更は、Livewireの機能向上とパフォーマンス改善に寄与しています。全ての変更内容は、指定されたGitHubの比較ページで詳細を確認できます。

Laravel Tips bot

laravel/jetstream v5.0.5

https://github.com/laravel/jetstream/releases/tag/v5.0.5

Laravel Jetstreamのプルリクエスト(https://github.com/laravel/jetstream/pull/1480)において、@alsterholmがテストスタブから使用されていない変数を削除しました。これはバージョン5.xに適用されています。

Laravel Tips bot

laravel/framework v11.6.0

https://github.com/laravel/framework/releases/tag/v11.6.0

以下は、Laravelの最近のリリースノートの要約です:

  1. MariaDBデータベースのヘルスチェックと命名に関する改善が行われました(@grooverdanによる貢献)。
  2. PHPUnit 11.1へのサポートが追加されました(@crynoboneによる貢献)。
  3. Bladeテンプレート内のverbatimブロックの前の空白を移動する変更が行われました(@Sjordによる貢献)。
  4. クエリパラメータがない場合に生成されるURLから末尾の?を削除する機能が追加されました(@onlimeによる貢献)。
  5. route:listソートコマンドに関するテストが追加されました(@fgarobyによる貢献)。
  6. リリースフローが改善されました(@driesvintsによる貢献)。
  7. BelongsToManyおよびHasManyThroughfirstWherefirstの戻り値の型が修正されました(@SanderMullerによる貢献)。
  8. 署名されたURLの改ざんテストにおけるタイポが修正されました(@Krisellによる貢献)。
  9. "Server has gone away"エラーの検出が追加されました(@Jubekiによる貢献)。
  10. SupportStrTestクラスにいくつかのテストが追加されました(@saMahmoudzadehによる貢献)。
  11. 翻訳に置換可能なタグを追加する機能が導入されました(@LegendEffectsによる貢献)。
  12. Factory::createManyがn^2レコードを生成する問題が修正されました(@calebdwによる貢献)。
  13. LARAVEL_STORAGE_PATH環境変数のサポートが修正されました(@dunglasによる貢献)。