タグ付けされた質問 「laravel」

Laravelは、Taylor Otwellによって作成された無料のオープンソースPHP Webフレームワークであり、Symfonyに基づいてモデルビューコントローラー(MVC)のアーキテクチャパターンに従ってWebアプリケーションを開発することを目的としています。LaravelのソースコードはGitHubでホストされ、MITライセンスの条件に基づいてライセンスされます。

7
Laravelアプリの機能の有効化/無効化
Laravelアプリを作成しています。このアプリには、さまざまな機能があります。特定のドメインの要件に応じて、それらを有効または無効にできるようにしたいと思います。現在、私の設定には次のような一連のフラグがあります: 'is_feature_1_enabled' => true, 'is_feature_2_enabled' => false, ... 等々。 次に、コントローラーとビューで、これらの構成値をチェックして、何かを表示したり、特定のアクションを許可したりする必要があるかどうかを確認します。私のアプリは、あらゆる種類のチェックで汚染され始めています。 Laravelアプリの機能を管理するベストプラクティスの方法はありますか?

5
バックグラウンドプロセスでConnectionExceptionではなくRejectionExceptionをスローするGuzzle
複数のキューワーカーで実行されるジョブがあり、Guzzleを使用したHTTPリクエストがいくつか含まれています。ただし、GuzzleHttp\Exception\RequestExceptionこれらのジョブをバックグラウンドプロセスで実行しているときに、このジョブ内のtry-catchブロックが取得されないようです。実行中のプロセスは、php artisan queue:workキューを監視してジョブを取得するLaravelキューシステムワーカーです。 代わりに、スローされる例外GuzzleHttp\Promise\RejectionExceptionはメッセージの1つです。 プロミスは次の理由で拒否されました:cURLエラー28:受信した0バイトで30001ミリ秒後に操作がタイムアウトしました(https://curl.haxx.se/libcurl/c/libcurl-errors.htmlを参照 ) これは実際には偽装されていますGuzzleHttp\Exception\ConnectException(https://github.com/guzzle/promises/blob/master/src/RejectionException.php#L22を参照)。これは、通常のPHPプロセスで同様のジョブを実行すると、 URL、私はConnectExceptionメッセージで意図したとおりに取得します: cURLエラー28:100ミリ秒後に操作がタイムアウトし、0バイトのうち0バイトが受信されました(https://curl.haxx.se/libcurl/c/libcurl-errors.htmlを参照 ) このタイムアウトをトリガーするサンプルコード: try { $c = new \GuzzleHttp\Client([ 'timeout' => 0.1 ]); $response = (string) $c->get('https://example.com')->getBody(); } catch(GuzzleHttp\Exception\RequestException $e) { // This occasionally gets catched when a ConnectException (child) is thrown, // but it doesnt happen with RejectionException because it is …


4
Laravelで権限をフィルタリングする際のパフォーマンスのための最良のアプローチ
ユーザーがさまざまなシナリオで多くのフォームにアクセスできるアプリケーションに取り組んでいます。ユーザーにフォームのインデックスを返すときに、最高のパフォーマンスでアプローチを構築しようとしています。 ユーザーは次のシナリオでフォームにアクセスできます。 所有フォーム チームはフォームを所有しています フォームを所有するグループへのアクセス許可を持っている フォームを所有するチームへのアクセス許可を持っている フォームへのアクセス許可があります ご覧のとおり、ユーザーがフォームにアクセスする方法は5つあります。私の問題は、ユーザーにアクセス可能なフォームの配列を最も効率的に返す方法です。 フォームポリシー: モデルからすべてのフォームを取得し、フォームポリシーでフォームをフィルターしようとしました。以下に示すように、各フィルター反復でフォームがcontains()eloquentメソッドを5回通過するため、これはパフォーマンスの問題のようです。データベース内のフォームが多いほど、これは遅くなります。 FormController@index public function index(Request $request) { $forms = Form::all() ->filter(function($form) use ($request) { return $request->user()->can('view',$form); }); } FormPolicy@view public function view(User $user, Form $form) { return $user->forms->contains($form) || $user->team->forms->contains($form) || $user->permissible->groups->forms($contains); } 上記の方法は機能しますが、パフォーマンスのボトルネックです。 私が見ることができるものから、以下のオプションがあります: FormPolicyフィルター(現在のアプローチ) すべての権限をクエリし(5)、単一のコレクションにマージする すべてのアクセス許可のすべての識別子をクエリし(5)、IN()ステートメントの識別子を使用してフォームモデルをクエリします 私の質問: どの方法が最高のパフォーマンスを提供しますか、そしてより良いパフォーマンスを提供する他のオプションはありますか?

1
Laravelブレード、ミックス、SASSリソースのバージョン管理の共有
私のプロジェクトでは、SASSとブレードの両方でいくつかのリソース(主にイメージ)を使用しています。また、SASSでのみ使用されるリソースと、Bladeでのみ使用されるリソースがあります。 たとえばmix('images/logo.png')、Bladeファイルやbackground: url('../images/logo.png')SASSファイルで使用できます。 私のディレクトリ構造に関しては、私は次のことをしました: - resources - js - sass - images // All images used by Blade, Sass, or both - fonts リソースをコンパイルしてpublicフォルダーに配置するには、以下を使用しますwebpack.mix.js。 mix.copy('resources/images/**/*.*', 'public/images'); mix.copy('resources/fonts/**/*.*', 'public/fonts'); mix.version('public/images/**/*.*'); mix.version('public/fonts/**/*.*'); mix.js('resources/js/app.js', 'public/js') .js('resources/js/vendor.js', 'public/js') .scripts([ // Old not ES6 JS 'resources/js/tpl/core.min.js' ], 'public/js/core.min.js') .sass('resources/sass/app.scss', 'public/css') .sourceMaps() .version(); その結果、app.cssでそのURLを取得します。 background: url(/images/logo.png?0e567ce87146d0353fe7f19f17b18aca); …

5
句がコンマとマージする2つの列
クエリを作成したい。 ここにテーブルがあります: id user_id sn_no 1 22 00112233 2 22 987654325 3 22 65489732 4 25 984123123 5 25 9568456456 6 25 65456456 私はこのような結果が欲しい: { "user_id":22, "sn_no": "00112233,987654325,65489732" } { "user_id":25, "sn_no": "984123123,9568456456,65456456" } 誰もがこの問題を解決するのを手伝ってくれませんか? 私が試した:concat、GROUP_CONCATしかし結果を得ることができません。 これを結合クエリに追加するのを手伝ってくれませんか? $users = \DB::table('users') ->join('users_mcu', 'users.id', '=', 'users_mcu.user_id') ->join('country_user', 'users.id', '=', 'country_user.user_id') ->join('country_phase_color', 'country_user.country_id', …

2
HMRがDockerのLaravel Mixで機能しない
Dockerコンテナ内のLaravel MixでHot Module Reloadingを設定する際にいくつか問題があります。 次のDockerfileがあります。 FROM php:7.4.0-fpm RUN curl -sL https://deb.nodesource.com/setup_13.x | bash RUN apt-get update && \ apt-get install -y -q --no-install-recommends \ nano apt-utils curl unzip default-mysql-client nodejs build-essential git \ libcurl4-gnutls-dev libmcrypt-dev libmagickwand-dev \ libwebp-dev libjpeg-dev libpng-dev libxpm-dev \ libfreetype6-dev libaio-dev zlib1g-dev libzip-dev && \ echo 'umask …

5
Laravel-正規表現ルートはすべてに一致しますが、1つ以上の単語に完全には一致しません
私はのようなルートを作ります Route::get('/{url1}', function ($url1) { return ' url1: '.$url1; }) ->where('url1', '^(?!(string1|string2)$)'); そして、次のようなURLにアクセスします - domain/abc 見つかりません=>間違っていますか? - domain/string1見つかりません=>正しい そして、私がするとき Route::get('/{url1}/{url2}', function ($url1) { return ' url1: '.$url1; }) ->where('url1', '^(?!(string1|string2)$)'); アクセスURLのように: - domain/abc/abc =>が間違っていません? - domain/string1/abc見つかりません=>正しい その感謝を修正する方法

2
画像の適切なプレビューを表示するために画像の向きを調整するにはどうすればよいですか?
ユーザーがアップロードした画像を受け付けて表示する機能を備えたララベルウェブアプリを開発しました。テスト中に問題が発生しました。携帯電話を使用してアップロードした写真が反時計回りに90度回転していたため、画像の介入を使用してその問題を解決しました。しかし、アップロードした画像のプレビューをJavaScriptを使用してユーザーに表示しているので、画像は90度回転しますが、画像を保存すると適切になります。私のJavaScriptコードは function imagePreview(input,elm) { if (input.files && input.files[0]) { var reader = new FileReader(); reader.onload = function (e) { $(elm).css("background-image","url('"+e.target.result+"')"); } reader.readAsDataURL(input.files[0]); } } $("#settings_img").on("change",function(){ imagePreview(this,"#settings_img_elm"); }); 上記のコードを編集して、必要に応じて画像の向きを変更できるようにして、プレビュー画像の向きを適切に設定してください。

5
Mac OSXの非常に遅いlaravel homestead / vagrant / virtualbox
私が使用していますMacでホームステッド+ベイグラント+ Virtualboxのを。 問題 遅い応答時間(TTFBなど)を修正する方法をたくさんのスレッド/回答で見つけましたが、どれも機能しませんでした。私の応答時間は25〜32秒の間で変化します。これは明らかにローカル開発では受け入れられません。 推奨されるソリューション 私はここから多くの提案された解決策を試しました:https://github.com/laravel/homestead/issues/901 また、これらのスレッドからの多くの提案を読んで試してみました。 ホームステッドでの応答が非常に遅い Vagrant Homestead遅い 最後のリクエストから60秒後にページロードが遅い Vagrant(NFS同期フォルダー)上のホストとゲスト間の同期待ち時間を短縮 受け入れられた回答があったとしても、それらのどれも私を助けませんでした。 xdebugを無効にする ここで説明されているようにxdebugを無効にすることは言うことができ ます 5秒節約ます。 ディスクサイズの変更 提案されるように固定するダイナミックからVMのディスクのサイズを変更しながら、ここと説明し、ここですべての助けにはならなかった(結果さえも悪化していました)。 ここで提案されている NFS(同期フォルダ)の使用 また、homestead / vagrantをNFSに設定しても効果はありませんでした。 試してみました(贅沢なファイル): Vagrant.configure("2") do |config| config.vm.synced_folder ".", "/vagrant", type: "nfs", mount_options:['nolock,vers=3,udp,noatime,actimeo=1'] end また試しました(homestead.yaml) folders: - map: '/Users/myuser/PhpstormProjects/example.com' to: /home/vagrant/code type: "nfs" options: mount_options: ['nolock','vers=3','udp','noatime','actimeo=1'] NFSはどちらの場合でも機能していましたが、ページの読み込み時のTTFBに関しては変わりませんでした。 natdnshostresolverの設定:オフ ここで提案されているように私もnatdnshostresolverをオフにしようとしました …

3
Laravelキュージョブ、実行時間の前に実行
特定の日時(たとえば、明日)に実行されるLaravelジョブを作成しました。時間を上書きし、設定された実行時間の前にキューに入れられたジョブを実行する手動ボタンを追加したいと思います。ボタンをクリックすると、ajax呼び出しが作成され、ジョブIDがサーバーに送信されます。これにより、ジョブは明日ではなく今日実行されます。 次のコマンドを使用して、失敗したジョブを手動で再試行できます。 php artisan queue:retry JOBIDHERE キューに入れられたジョブの実行に何を使用すればよいかわかりません。 ジョブIDを取得できますが、設定された実行時間より前にLaravelジョブを実行できるかどうかはわかりません。 私はGoogleで検索しましたが、そのような問題と解決策を持つ人は見つかりませんでした。 Laravel Ver 5.8を使用しています。Mysql 5.7の使用 更新: 以下は、キューに入れられたジョブのペイロードです。 Json Decodeを使用してデコードしましたが、そのキューのコマンドを更新して、キューの日付と時刻を更新し、キューに入れられたジョブレコードに保存できるかどうかはわかりません。 {"displayName":"App\\Jobs\\Payway\\UpdateCustomerInvestment","job":"Illuminate\\Queue\\CallQueuedHandler@call","maxTries":null,"delay":null,"timeout":null,"timeoutAt":null,"data":{"commandName":"App\\Jobs\\Payway\\UpdateCustomerInvestment","command":"O:40:\"App\\Jobs\\Payway\\UpdateCustomerInvestment\":17:{s:57:\"\u0000App\\Jobs\\Payway\\UpdateCustomerInvestment\u0000transactionType\";s:7:\"payment\";s:57:\"\u0000App\\Jobs\\Payway\\UpdateCustomerInvestment\u0000principalAmount\";d:9999;s:56:\"\u0000App\\Jobs\\Payway\\UpdateCustomerInvestment\u0000customerNumber\";s:4:\"BR-2\";s:50:\"\u0000App\\Jobs\\Payway\\UpdateCustomerInvestment\u0000currency\";s:3:\"aud\";s:58:\"\u0000App\\Jobs\\Payway\\UpdateCustomerInvestment\u0000singleUseTokenID\";N;s:55:\"\u0000App\\Jobs\\Payway\\UpdateCustomerInvestment\u0000payway_helper\";O:29:\"App\\Http\\Helpers\\PaywayHelper\":0:{}s:54:\"\u0000App\\Jobs\\Payway\\UpdateCustomerInvestment\u0000impodenceKey\";s:36:\"afedfc34-d08e-4831-a4aa-29de930d6b98\";s:49:\"\u0000App\\Jobs\\Payway\\UpdateCustomerInvestment\u0000headers\";a:0:{}s:60:\"\u0000App\\Jobs\\Payway\\UpdateCustomerInvestment\u0000localInvestmentObj\";O:45:\"Illuminate\\Contracts\\Database\\ModelIdentifier\":4:{s:5:\"class\";s:33:\"App\\Models\\Investment\\Investments\";s:2:\"id\";i:374;s:9:\"relations\";a:2:{i:0;s:8:\"investor\";i:1;s:13:\"investor.user\";}s:10:\"connection\";s:5:\"mysql\";}s:54:\"\u0000App\\Jobs\\Payway\\UpdateCustomerInvestment\u0000paywayTotals\";O:45:\"Illuminate\\Contracts\\Database\\ModelIdentifier\":4:{s:5:\"class\";s:38:\"App\\Models\\Banking\\Payway\\PaywayTotals\";s:2:\"id\";i:1;s:9:\"relations\";a:0:{}s:10:\"connection\";s:5:\"mysql\";}s:6:\"\u0000*\u0000job\";N;s:10:\"connection\";N;s:5:\"queue\";s:6:\"payway\";s:15:\"chainConnection\";N;s:10:\"chainQueue\";N;s:5:\"delay\";O:13:\"Carbon\\Carbon\":3:{s:4:\"date\";s:26:\"2019-11-12 23:35:22.752222\";s:13:\"timezone_type\";i:3;s:8:\"timezone\";s:16:\"Australia\/Sydney\";}s:7:\"chained\";a:0:{}}"}} アップデート2: ペイロードコマンドをデシリアライズすると、次の情報が得られました。 だから私はその遅延日を更新しようとしています、うまくいけばそれはうまくいくでしょう。 しかし、「Julian Stark」の回答から、available_atも更新する必要があるかもしれません。 私の理論では、キューが実行されると、に基づいてジョブが検索されavailable_atます。ただし、ジョブの実行中に遅延が発生すると、その特定の時間に実行されない可能性があります。この理論はまだテストされていません。 これら両方のdateTimeを更新し、すべてがスムーズに機能するかどうかを確認します。
8 php  mysql  laravel 

2
Laravel 5.8から6.2へのアップグレード後、ConfirmPasswordControllerが存在しない
私はLaravel 5.8のプロジェクトに取り組んでおり、最近、パッケージの依存関係バージョンも含めてLaravel 6.0にアップグレードしました。プロジェクトは問題なく実行されていました。しかし、今日、私は作曲家を経由composer update,して更新し、Laravel 6.2にアップグレードしました。その後、私はエラーに直面しました: App \ Http \ Controllers \ Auth \ ConfirmPasswordControllerは存在しません 次に、新しくLaravel-6.2生成された基本的な足場をviaでインストールし、php artisan ui vue,その後で生成されたlogin/registrationscaffolding via php artisan ui vue --auth.を見つけ、ConfirmPasswordController.それからThen を見つけConfirmPasswordControllerて、実行中のプロジェクトで手動で作成し、すべてのコードをからConfirmPasswordController手動で作成したConfirmPasswordController.Thenにコピーしたところ、エラーが発生しなくなりました。これに関連するエラーは発生しませんでしたが。しかし、私は自分のアプローチについて混乱しています。私がしたことは正しい方法ですか?または、この問題を解決するためのより良い方法があります。php artisan ui vue --auth次回に向けて多くの問題に直面した場合、私は混乱しています。誰かが私に正しいプロセスを提案しますか、どうすればよいですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.