Как передать дополнительные параметры с помощью laravel с функцией

Как мы можем передать дополнительные параметры в Laravel с помощью function. Я попробовал следующий код, но не повезло.

$endpoints = MyModel::with(['myrelation' => function($q) use ($extraParams) {
    foreach ($extraParams as $param)
    {
        $q->orWhere('ia.paramCode','like',$param.'%');
    }
}])->get();

Когда я использую этот код, он показывает следующую ошибку

Cannot use lexical variable $extraParams as a parameter name

заранее спасибо

Какую версию PHP вы используете?

Adnan Mumtaz 04.07.2018 09:12

извините это была опечатка

aishazafar 04.07.2018 09:14

PHP 7.1.7 @AdnanMumtaz

aishazafar 04.07.2018 09:16

удалите $extraParams отсюда function($q,$extraParams)

Niklesh Raut 04.07.2018 09:16

Должен быть function($q) use ($extraParams, $otherParam)

M Khalid Junaid 04.07.2018 09:17

function ($ q) use (& $ extraParams) {

kenken9999 04.07.2018 17:34

@MKhalidJunaid Спасибо за вашу помощь. Я тоже попробую этот метод.

aishazafar 06.07.2018 12:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
7
571
1

Ответы 1

Это происходит в PHP 7, когда вы дважды передаете одну и ту же переменную (use ($extraParams). Простое исправление - переименовать (use ($extraParams) в (use ($someThingElse).

$endpoints = MyModel::with([
    'myrelation' => function($q) use ($extraParams){
        foreach ($extraParams as $param) {
            $q->orWhere('ia.paramCode','like',$param.'%');
        }
    }
])->get();

Это ошибка в PHP 7 с применением быстрого исправления.

Неопределенная переменная: allOtherParams

aishazafar 04.07.2018 09:27

@aishazafar эта ошибка возникает, когда вы дважды передаете одно и то же имя переменной в параметрах функции. поэтому вам нужно изменить дополнительные параметры на что-то другое

Adnan Mumtaz 04.07.2018 09:29

Та же проблема, неопределенная переменная $ allOtherParams

aishazafar 04.07.2018 09:36

@aishazafar $endpoints = MyModel::with(['myrelation'=>function($q) use ($extraParams){ foreach ($extraParams as $param) { $q->orWhere('ia.paramCode','like',$param.'%'); } }])->get(); используйте этот код

Adnan Mumtaz 04.07.2018 09:37

Другие вопросы по теме