Laravel разбивает запрос на несколько запросов - PullRequest
0 голосов
/ 28 октября 2018

У меня есть форма с большим количеством входов.Для организации запроса входы имеют разные массивы.Например, вот некоторые поля ввода:

<input id="title" type="text" class="form-control" name="company[title]" required>
<input id="foundingYear" type="text" class="form-control" data-format="date" name="company[foundingYear]" required>
<input id="phone" type="number" class="form-control" name="entrepreneur[phone]" required>

Каждая модель имеет функцию с именем shortEdit, которая выглядит примерно так:

public function shortEdit($request)
{ 
    $request->has('street') ? $this->street = clean($request->street) : null;
    $request->has('housenumber') ? $this->housenumber = clean($request->housenumber) : null;
    $request->has('city') ? $this->city = clean($request->city) : null;
    $request->has('country') ? $this->country = clean($request->country) : null;
    $request->has('phone') ? $this->phone = clean($request->phone) : null;
    $request->has('email') ? $this->email = clean($request->email) : null;
    $request->has('facebook') ? $this->facebook = clean($request->facebook) : null;
    $request->has('twitter') ? $this->twitter = clean($request->twitter) : null;
    ...
}

Теперь я подумал, что могу назвать эту функцию следующим образомэтот insode мой контроллер

public function store(Request $request) {
    ...
    $company->shortEdit($request->company);
    $entrepreneur->shortEdit($request->entrepreneur);
}

Функции shortEdit прекрасно работают, если я просто вызываю их с помощью $request, а в запросе есть данные только для модели.

Однако, если явызывайте их с помощью массива, все функции, которые вы можете применить к запросу (например, $request->has()), больше не работают.Поэтому я подумал, можно ли разделить запрос на новые запросы и вызвать с ними функции shortEdit?

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

После некоторых тестов я нашел решение, которое работает:

Мне просто нужно проверить каждую shortEdit функцию, если $request - массив.Если это так, я создаю новый запрос с этим массивом:

if(is_array($request)) {
    $request = new Request($request);
}

Теперь я могу работать с $request как запрос.

0 голосов
/ 28 октября 2018

Обратите внимание, что если вы хотите вызывать их с помощью массива, вы должны сделать это следующим образом

$request->has('array_name.*');

, звездочки означают все элементы в массиве, или вы можете сделать это таким образом, если вы знаетеключ

$request->has('array_name.key_name');

, но если вы хотите разделить запрос, вы можете создать новый объект запроса, подобный этому

$request2 = new Request([
  'key_name'=>'value',
  'another_keyname'=>'value',
]);

, надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...