Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Если я с помощью dd($event->get()) получаю данные, то выводятся корректные данные
$language = app()->getLocale();
$event = Event::join('event_translations', 'events.id', '=', 'event_translations.event_id')
->where('event_translations.locale', '=', $language);
dd($event->get());
А если с помощью json, то нет
return response()
->json([
'model' => $event->get(),
]);
Например,
dd($event->get())
#attributes: array:8 [
"id" => 27
"picture" => "cutlery.png"
"created_at" => "2017-01-19 14:24:18"
"updated_at" => "2017-01-19 14:24:18"
"event_id" => 3
"locale" => "pl"
"name" => "RESTAURACJI"
"description" => "RESTAURACJI\r\n"]
json
created_at:"2017-01-19 14:24:18"
description:"BARMANI NA ZLECZENIE"
event_id:3
id:27
locale:"pl"
name:"BARMANI NA ZLECZENIE"
picture:"cutlery.png"
updated_at:"2017-01-19 14:24:18"
Для локализации использую пакет dimsav/laravel-translatable
Laravel 5.3
Все разобрался, всем спасибо
Да, я это не заметил в Документации.
Владельца полиморфного отношения я могу получить
$comment = App\Comment::find(1);
$commentable = $comment->commentable;
Но не работает получение всех комментариев. Он вообще почему-то составляет неправильный запрос
$post = App\Post::find(1);
foreach ($post->comments as $comment) {
//
}
В итоге возникает ошибка
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'posts.commentable_id' in 'where clause' (SQL: select * from `posts` where `posts`.`commentable_id` = 1 and `posts`.`commentable_id` is not null and `posts`.`commentable_type` = post)
Создал БД
posts
id - integer
title - string
body - text
videosid - integer
title - string
url - string
commentsid - integer
body - text
commentable_id - integer
commentable_type - string
Для каждой Модели определил отношения
class Comment extends Model
{
/**
* Get all of the owning commentable models.
*/
public function commentable()
{
return $this->morphTo();
}
}
class Post extends Model
{
/**
* Get all of the post's comments.
*/
public function comments()
{
return $this->morphMany('App\Comment', 'commentable');
}
}
class Video extends Model
{
/**
* Get all of the video's comments.
*/
public function comments()
{
return $this->morphMany('App\Comment', 'commentable');
}
}
В контроллере написано
public function index()
{
$comment = App\Comment::find(1);
$commentable = $comment->commentable;
dd( $commentable);
}
Но мне выдает ошибку
FatalErrorException in Model.php line 827: Class 'post' not found
В базе пробовал менять название commentable_type на Post все равно ошибка.введите сюда описание изображения
Что мне сделать чтобы отношения работали?
constb пишет:не могу сказать как вообще vue-исты решают этот вопрос
точно так же как Тейлор решает вопрос с локализацией - папкой lang.
Ну, а если не использовать blade? В Blade шаблоне находится только один div, к которому подключается Vue-компоненты. Или выход перенести все в Blade?
Как мне в шаблоне <template> можно будет подставлять текст разных языков?
Как можно правильно локализовать базу в laravel, если будет несколько языков и возможно, что в дальнейшем еще будет добавляться языки?