Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Laravel 5.x » Валидация большого количества одинаковых полей » 25.09.2020 02:28:11

dldmyt
Ответов: 2

Добрый день, есть форма, в которой по кнопке создаются дополнительные поля, этих полей можно создать неограниченное количество и каждое поле необходимо проверить на длину текста.
В контроллер данные передаются через Request файл, в данный момент это безобразие в request файле выглядит так:

public function rules()
    {
        return [            
            'question-img-1' => 'image|mimes:jpeg,png,jpg,gif|size:2000',
            'question-title-1' => 'max:60',
            'question-desc-1' => 'max:300',
            'question-img-2' => 'image|mimes:jpeg,png,jpg,gif|size:2000',
            'question-title-2' => 'max:60',
            'question-desc-2' => 'max:300', 
            'question-img-3' => 'image|mimes:jpeg,png,jpg,gif|size:2000',
            'question-title-3' => 'max:60',
            'question-desc-3' => 'max:300',  
            'question-img-4' => 'image|mimes:jpeg,png,jpg,gif|size:2000',
            'question-title-4' => 'max:60',
            'question-desc-4' => 'max:300',  
            'question-img-5' => 'image|mimes:jpeg,png,jpg,gif|size:2000',
            'question-title-5' => 'max:60',
            'question-desc-5' => 'max:300',  
            'question-img-6' => 'image|mimes:jpeg,png,jpg,gif|size:2000',
            'question-title-6' => 'max:60',
            'question-desc-6' => 'max:300',  
            'question-img-7' => 'image|mimes:jpeg,png,jpg,gif|size:2000',
            'question-title-7' => 'max:60',
            'question-desc-7' => 'max:300',                      
        ];
    }
    public function attributes()
    {
        return[            
            'question-img-1' => 'question image', 
            'question-title-1' => 'question title',
            'question-desc-1' => 'question desc',
            'question-img-2' => 'question image', 
            'question-title-2' => 'question title',
            'question-desc-2' => 'question desc',
            'question-img-3' => 'question image', 
            'question-title-3' => 'question title',
            'question-desc-3' => 'question desc',
            'question-img-4' => 'question image', 
            'question-title-4' => 'question title',
            'question-desc-4' => 'question desc',
            'question-img-5' => 'question image', 
            'question-title-5' => 'question title',
            'question-desc-5' => 'question desc',
            'question-img-6' => 'question image', 
            'question-title-6' => 'question title',
            'question-desc-6' => 'question desc',
            'question-img-7' => 'question image', 
            'question-title-7' => 'question title',
            'question-desc-7' => 'question desc',
        ];
        
    }

Как-то можно сделать эту проверку без прописывания имени каждого поля, что-то типа 'question-desc*' => 'max:300'. Понимаю что можно в контроллере циклом через validator сделать это, а в request как?

#2 Re: Laravel 6/7/8/9/10 » Не выводятся данные из связанных таблиц » 08.09.2020 08:25:11

Все, спасибо, разобрался. В моделях прописал:

protected $primaryKey = 'srv_id';

#3 Laravel 6/7/8/9/10 » Не выводятся данные из связанных таблиц » 08.09.2020 07:23:05

dldmyt
Ответов: 2

Здравствуйте, помогите, пожалуйста, есть две таблицы: Questions, Answers. Суть такая, при создании вопроса, создаются сразу варианты ответов в обеих таблицах есть одинаковое поле srv_id, оно автоматически генерируется и пишется в вопросе и в вариантах ответов у нему. При попытке вывести всех вопросов с вариантами ответов на экран, выводятся только вопросы, ошибок не выдается, но и данные из answers не выводятся.
Модель Questtion:

<?php

namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Question extends Model
{
	protected $table = 'questions';
	public function answers(){
		return $this->hasMany(Answer::class, 'srv_id');
	}
}

Модель Answers:

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Answer extends Model
{
    protected $table = 'answers';
    public function question(){
    	return $this->belongTo(Question::class, 'srv_id');
    }
}

Контроллер:

class GetQuestionController extends Controller
{
    public function all_Data(){
  	$questions = Question::with(['answers' => function($q) {
	$q->orderBy('title','description');
	}])->paginate();		
	return view('questions', ['questions' => $questions]);		
    }
}

Код вывода:

@foreach ($questions $question)
    <div class="panel panel-default">
        <div class="panel-heading">
           {{ $question->title  }}
        </div>

        <div class="panel-body">
            @foreach ($question->answers $answer)                           
                {{ $answer->title }}
                <br>
                {{ $answer->description }}
            @endforeach
        </div>
    </div>
@endforeach

Вполне возможно, что я все в корне не правильно делаю, помогите разобраться, пожалуйста.

Подвал раздела