質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

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

Model

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

スコープ

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

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

エスケープ処理

エスケープ処理とは、一連の文字や一文字に対して、一定の規則に従って別の意味を適用する処理過程です。

Q&A

解決済

1回答

1339閲覧

withoutGlobalScopes()に引数を入れると"withoutGlobalScopes() must be of the type array or null, string given"

tenlife

総合スコア70

Laravel

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

Model

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

スコープ

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

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

エスケープ処理

エスケープ処理とは、一連の文字や一文字に対して、一定の規則に従って別の意味を適用する処理過程です。

0グッド

0クリップ

投稿2020/09/14 22:43

laravelでグローバルスコープをエスケープして値を取得しています。

解決したいこと: withoutGlobalScopes()メソッドに引数を渡して実装したい

現状: 引数を入れると"withoutGlobalScopes() must be of the type array or null, string given"と言われてしまいます。
"arrayかnullであるべきなのに、文字列が渡っている" と理解しています。

controller

1$user->items()->withoutGlobalScopes()->where('status', '1')->get(); 2 3エラーの方⬇️ 4$user->items()->withoutGlobalScopes(ScopeItem::class)->where('status', '1')->get();

ScopeItem

1<?php 2namespace App\Scopes; 3 4use Illuminate\Database\Eloquent\Scope; 5use Illuminate\Database\Eloquent\Model; 6use Illuminate\Database\Eloquent\Builder; 7 8class ScopeItem implements Scope 9{ 10 public function apply(Builder $builder, Model $model) 11 { 12 $builder->where('status', '0'); 13 } 14}

model

1 use App\Scopes\ScopeItem; 2 3 protected static function boot() 4 { 5 parent::boot(); 6 static::addGlobalScope(New ScopeItem); 7 }

参考にしているサイト
https://readouble.com/laravel/7.x/ja/eloquent.html
https://pgmemo.tokyo/data/archives/1804.html

上記サイトと同じように書いて進めているのですが、エラーが返ってきてしまい、うまく実装出来ずにいます。

どなたかお分かりになる方いましたら、教えていただきたいです。
よろしくお願いいたします。

laravel 7.x

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

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

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

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

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

guest

回答1

0

ベストアンサー

diff

1- $user->items()->withoutGlobalScopes(ScopeItem::class)->where('status', '1')->get(); 2+ $user->items()->withoutGlobalScopes([ScopeItem::class])->where('status', '1')->get();

上記サイトと同じように書いて進めているのですが、エラーが返ってきてしまい、うまく実装出来ずにいます。

同じようには書いてませんね。

イメージ説明

投稿2020/09/15 00:45

phper.k

総合スコア3923

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

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

tenlife

2020/09/15 02:25 編集

回答ありがとうございます! 完全にバイアスかかってました。もっと注意深く読むように心がけます。 use App\Scopes\ScopeItem;の設定もしていなかったのに気づきました。 ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問