Итак, ребята, я начинаю изучать Laravel, но в настоящее время я застрял в проблеме, которая не может найти никакого решения ... Я нашел некоторые связанные решения, но после попытки никто не решил мою проблему, так что это :
Я создаю блог, поэтому у меня есть сообщения, теги и категории.
Сообщение принадлежит только одной категории, а категории могут принадлежать многим сообщениям, отсюда ... ОК!
Теперь сообщения принадлежат многим тегам, поскольку теги принадлежат многим сообщениям ... Проблема!
У меня есть сводная таблица, и все работает нормально, настоящая проблема в том, что когда мне нужно извлечь данные из этой сводной таблицы, я не могу понять, как она должна работать.
Что я пытаюсь сделать, так это то, что пользователь может удалить тег, только если с ним не связано ни одного сообщения.
Почтовая модель
public function tags()
{
return $this->belongsToMany('App\Tag');
}
Tag Model
public function posts()
{
$this->belongsToMany('App\Post');
}
Контроллер тегов (метод удаления)
public function delete($id)
{
// Get tag by ID
$tag = Tag::find($id);
$tag_name = $tag->tag;
/** Try to check data */
if($tag->posts->count() > 0) {
Session::flash('error', 'There is some associated posts to "' . $tag_name . '", delete them before.');
} else {
Session::flash('success', 'Tag "' . $tag_name . '" was deleted successfully.');
//$tag->delete();
}
return redirect()->back();
}
Я пробовал
$tag->posts()->get()
$tag->posts->get()
Tag::find(1)->posts->get()
Tag::where('id', [1])->get()
Некоторые другие комбинации, каждая возвращает логическое исключение или фатальную ошибку ...
App\Tag::posts must return a relationship instance
Кнопка просмотра (передача идентификатора)
<a href="{{ route('tags.delete', ['id' => $tag->id]) }}" class="btn btn-sm btn-danger"><i class="fas fa-trash"></i> Delete</a>
Маршрут в web.php
Route::get('/tags/delete/{id}', 'TagsController@delete')->name('tags.delete');
Я очень долго пытаюсь получить данные из множества данных, это начинает становиться очень напряженным.