Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Всем доброго времени суток. Второй день бьюсь с проблемой. При создании записи таким вот образом:
$post = Post::create($data);
$post->tags()->sync($request->tags);
Выдает ошибку ErrorException Array to string conversion
Ниже прилагаю код модели, контроллера ну и вида на всякий.
class Post extends Model
{
use HasFactory;
use Sluggable;
protected $guarded = [];
public function sluggable(): array
{
return [
'slug' => [
'source' => 'title'
]
];
}
public function tags(){
return $this->belongsToMany(Tag::class);
}
public function category(){
return $this->belongsTo(Category::class);
}
}
class Tag extends Model
{
use HasFactory;
use Sluggable;
protected $guarded = [];
public function sluggable(): array
{
return [
'slug' => [
'source' => 'title'
]
];
}
public function posts(){
return $this->belongsToMany(Post::class);
}
}
Контроллер Post
public function store(Request $request)
{
$request->validate([
'title' => 'required',
'category_id' => 'required|integer',
'thumbnail' => 'nullable|image',
]);
$data = $request->all();
if($request->hasFile('thumbnail')){
$folder = date('Y-m-d');
$data['thumbnail'] = $request->file('thumbnail')->store("images/{$folder}");
}
$post = Post::create($data);
$post->tags()->sync($request->tags);
return redirect()->route('posts.index')->with('success', 'Запись успешно добавлена');
}
Ну и фрагмент вида
<div class="form-group">
<label for="tags">Тэги</label>
<select name="tags[]" class="select2" multiple="multiple" data-placeholder="Выбор тэгов" id="tags" style="width: 100%;">
@foreach($tags as $k => $v)
<option value="{{ $k }}">{{ $v }}</option>
@endforeach
</select>
</div>
Не в сети
Решил проблему . Вместо метода create() сделал так:
public function store(Request $request)
{
$request->validate([
'title' => 'required',
'category_id' => 'required|integer',
'thumbnail' => 'nullable|image',
]);
$data = $request->all();
if($request->hasFile('thumbnail')){
$folder = date('Y-m-d');
$data['thumbnail'] = $request->file('thumbnail')->store("images/{$folder}");
}
$post = new Post();
$post->title = $data['title'];
$post->description = $data['description'];
$post->content = $data['content'];
$post->published = $data['published'];
$post->meta_keywords = $data['meta_keywords'];
$post->meta_description = $data['meta_description'];
if(isset($data['thumbnail'])){
$post->thumbnail = $data['thumbnail'];
}
$post->category_id = $data['category_id'];
$post->save();
$post->tags()->sync($request->tags);
return redirect()->route('posts.index')->with('success', 'Запись успешно добавлена');
}
Не в сети
Привет! Я знаю откуда этот код)))) и у меня такая же ошибка. Твой метод помог!!! Только пару строчек убрал)) Спасибо!
Не в сети