Не могу понять логику. То есть до того как обработается сквозной блок сделать запросы и запихнуть туда параметры? На каком моменте это делать и в какой части?
Да, именно эти методы описаны в модели Board:
public function user()
{
return $this->belongsTo('App\User');
}
public function file(){
return $this->hasOne('App\Models\File','user_id','user_id')->where('module_id', 'user_profile');
}
public function category()
{
return $this->belongsTo('App\Models\BoardCategory', 'category_id');
}
public function currency()
{
return $this->belongsTo('App\Models\BoardCurrency', 'currency_id');
}
public function getPhoto()
{
return $this->belongsTo('App\Models\File', 'photo_id');
}
Не догадаюсь как сделать join для такой записи, если модель такая:
public function answer()
{
return $this->hasMany('App\Models\Answer', 'quest_id');
}
Я делал немного по другому, создавал скрытый id и скрытый хэш по своей комбинации этого id так как комбинацию знает только контроллер, то подделать не возможно. И в контроллере принятый id перевожу в такой же хэш и сверяю. Это думаю 100 поможет, но посто интересно какие методы используются? Так как на многих известных ресурсах можно запросто подделывать запросы.
Создал скрытый инпут с id текущего вопроса, при ответах все хорошо записывается. Но Изменил в исходнике id вопроса на другой существующий, и тоже все записалось но в другой вопрос. Оно и логично. Получается из одной странице можно ответить на другой вопрос. Как этого избежать? csrf token стоит и все настроено точно. Просто тут логически нет запрета. Так как вопрос с id другим существует. Пользователь имеет права добавлять. А к контроллеру поступают данные из формы. Он их и обрабатывает.
Но то что в доках я читал и использую csrf token по умолчанию. Но я не могу понять, то есть дополнительная его проверка не требуется в контроллере? Ну например я изменю в запросе id вопроса. Как пойдет проверка с помощью csrf token?
Согласен, что можно подделать url как написали выше. Скажите пожалуйста, не очень ясно. csrf token по умолчанию настроен на защиту форм в laravel? Или требуется его проверка?
Просто не ясно разницы пока, если количество обращений из вьюхи будет такое же если я сформирую массив этот до вьюхи. Все ровно придется пробежаться циклом по всем элементам и повытаскивать нужные данные.
Ну как я понимаю это повсеместно требуется везде. Как делают те, кто уже отточил этот процесс? Какой подход будет максимально идеальным во всем. С точки зрения экономии процессов и скорости и других факторов?
А как могут тут помочь эвенты? Я например их использую для уведомлений. Но разве к данному случаю их можно и логично применить? Если да то какая логика?
У меня и есть связи в моделях через hasOne. У пользователя может быть, а может не быть фото. Поэтому условия делается в цикле во вьюхе.
@if(\App\Models\Question::find($quest_id)->user->UserPhoto)
есть фото и его вытягиваем
@else
нет фото и отдаем пустую картинку
@endif
Возможно ли сделать до ренденга тогда? Если в цикле вывода например новостей нужно еще узнавать фото пользователя. Заранее ведь его не присвоить, а только в форейче.
Точно! До этого использовал hasOne
public function UserPhoto(){
return $this->hasOne('App\Models\File', 'user_id')->where('module_id', 'user_profile');
}
Но где то увидел в примере belongsTo и решил что нужно с ним. Вы не могли бы пример в двух словах, в каких случаях использовать belongsTo ?
Я явно ведь указал как таблицу, так и ключ:
return $this->belongsTo('App\Models\File', 'user_id')
Но все ровно null
Имеет ли значение название функции? Я назвал функцию photoUser
Но сама фотография хранится в поле image_url таблицы files