В моей модели Post эта функция не работает
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $table = "wp_posts";
protected $primaryKey = "ID";
public function taxonomies()
{
return $this->belongsToMany('App\Models\TermTaxonomy', 'wp_term_relationships', 'object_id', 'term_taxonomy_id');
}
}
Я хочу получить данные таксономии из сообщения через сводную таблицу, но не могу.
Я подключил Laravel к своей базе данных WP и попытался получить таксономии из сообщений.
Сообщения и таксономии связаны со сводной таблицей wp_term_relationships.
таблица сообщений имеет первичный ключ 'ID'
таблица таксономии имеет первичный ключ term_taxonomy_id
Сводная таблица похожа на 'wp_term_relationships' - 'object_id' ... относится к Post.ID - 'term_taxonomy_id' ... относится к Taxonomy.term_taxonomy_id
Я не знаю, почему это не работает. Если кто знает, пожалуйста, помогите мне. Большое спасибо.
// Taxonomy
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class TermTaxonomy extends Model
{
protected $table = 'wp_term_taxonomy';
protected $primaryKey = 'term_taxonomy_id';
}
// in the Controller
public function profile($id)
{
$teacher = User::isTeacher()->where(['ID' => $id])->with(['posts' => function ($query) {
$query->where('post_type', 'answer')->take(3);
}])->firstOrFail();
$data = [
'teacher' => $teacher
];
return view('teacher.profile', $data);
}
// in the View
@foreach($teacher->posts as $answer)
@php
foreach($answer->postParent->taxonomies as $taxonomy) {
print($taxonomy->term_id);
}
@endphp
@endforeach
О, спасибо, это тоже было важно, но я уже сделал это
Sql выглядит странно, когда я пытаюсь получить данные select wp_term_taxonomy.*, wp_term_relationships.object_id` как pivot_object_id, wp_term_relationships.term_taxonomy_id как pivot_term_taxonomy_id из внутреннего соединения wp_term_taxonomy, где wp_term_relationships на wp_term_taxonomy. но здесь 83
Я думаю, что внутреннее соединение работает хорошо, но получение данных из объединенной таблицы не работает
опубликуйте свой класс модели Taxonomy и код, который вы использовали для его получения
@rkj Я отредактировал свой пост и добавил их, спасибо.
используйте $answer->taxonomies вместо $answer->postParent->taxonomies в поле зрения
Я пробовал сейчас и это то же самое
Позвольте нам продолжить обсуждение в чате.
Попробуй отношения без ->take(3).
Спасибо, но я пробовал и все еще не работаю @JonasStaudenmeir






Настоящая проблема заключалась не в том, как определить отношения "многие ко многим", это было то, как получить данные о взаимосвязи.
public function profile($id)
{
$teacher = User::isTeacher()->where(['ID' => $id])->with(['posts' => function ($query) {
$query->where('post_type', 'answer')->take(3)->with(['postParent' => function ($query) {
$query->where('post_type', 'question')->with(['taxonomies' => function ($query) {
$query->where('taxonomy', 'question_category')->with(['term']);
}]);
}]);
}])->firstOrFail();
$data = [
'teacher' => $teacher
];
return view('teacher.profile', $data);
}
добавьте
protected $primaryKey = "term_taxonomy_id";в вашу модельTaxonomy