🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

スコープ

スコープとは、プログラム内で変数名など、参照可能な有効範囲のことを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Blade

Bladeとは、 PHPフレームワークのLaravelで使用することができるテンプレートエンジンです。テンプレートの継承とエスケープ機能を提供します。

Q&A

解決済

1回答

2615閲覧

Laravelのグローバルスコープがうまくできません。

manaeos

総合スコア32

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

スコープ

スコープとは、プログラム内で変数名など、参照可能な有効範囲のことを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Blade

Bladeとは、 PHPフレームワークのLaravelで使用することができるテンプレートエンジンです。テンプレートの継承とエスケープ機能を提供します。

0グッド

0クリップ

投稿2020/12/03 08:43

凄く基本的な事だと思うのですが、Laravelのグローバルスコープがうまくできません。

以下のファイルを用意しました。

■Model
「Main.php」

namespace App\Models\J; use Illuminate\Database\Eloquent\Scope; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Facades\DB; use Validator; class Main extends Model{ public $table='_j_main'; protected static function boot() { parent::boot(); static::addGlobalScope('preview', function (Builder $builder) { $builder->where('preview', '>', 10); }); } }

■Controller
「FindController.php」

namespace App\Http\Controllers; use Illuminate\Http\Request; use Validator; use Illuminate\Support\Facades\DB; use App\Models\J\Main; class FindController extends Controller { // public function index(Request $request) { $item = Main::all(); return view( 'find.index',[ 'item' => $item ] ); } }

■views
「index.blade.php」

@if (isset($item)) @foreach($item as $it) {{$it->name}} {{$it->preview}}<br> @endforeach @endif

目的はグローバルスコープを試したいだけなのですが、
これでページを開くと、グローバルスコープが効かず、全レコードが表示されます。
検索等で調べたりもしたのですが、何が間違っているのか分かりません。
Laravelのバージョンは8.8です。

何卒よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FKM

2020/12/03 08:56

どこでbootメソッドを実行してますか?
manaeos

2020/12/03 09:36 編集

表記したものしかないのですが・・・ その実行部分が無いからですか。
guest

回答1

0

ベストアンサー

Laravelのバージョンは8.8です。

8はbootedだと
https://readouble.com/laravel/8.x/ja/eloquent.html

protected static function boot() ↓ protected static function booted()

投稿2020/12/03 09:08

編集2020/12/03 09:08
hentaiman

総合スコア6426

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

manaeos

2020/12/03 11:10

ありがとうございます。 解決しました。 リンク先のサイトも見てはいたのですが、バージョンごとに分かれているのは気づきませんでした。
hentaiman

2020/12/03 11:17

laravelはバージョンアップの都度結構書き方変わる上にその頻度も高いのでドキュメントの確認は必須ですね 書き方安定するまでLaravel離れて他のフレームワーク試してみるのもいいかもしれませんね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問