【发布时间】:2019-11-09 05:08:54
【问题描述】:
我有一个“posts”表和一个“post_images”表。我正在尝试从两个表中获取数据并将“用户”表加入其中。一切正常,但查询为每个帖子图像返回不同的对象。
我的 AJAX 代码:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: '/loadPosts',
type: 'GET',
dataType: 'json',
data: {_token: "{{ csrf_token() }}"},
success: function(r){
console.log(r);
r.forEach((post)=>{
$('.posts-div').append(`
<div class="card mb-3">
<h5 class="card-header">
<img src="https://www.stickpng.com/assets/images/585e4bf3cb11b227491c339a.png" style="width: 35px; height: 35px;">
${post.name} ${post.surname}
</h5>
<div class="card-body">
<p class="card-text">${post.text}</p>
<img src="images/${post.link}" style="width: 100%;">
</div>
</div>
`);
})
}
})
路线:
Route::get('/loadPosts','UserController@loadPosts');
功能:
public function loadPosts(){
$my_id = Auth::user()->id;
$posts = DB::table('posts')->where('user_id','!=',$my_id)->join('post_images','posts.id','=','post_images.post_id')->join('users','posts.user_id','=','users.id')
->select('image','link','name','surname','text')
->get()
->toArray();
print_r(json_encode($posts));
}
这就是我在 AJAX 中获得的成功:
新帖子有 3 张图片,所以它必须是一个对象,而不是三个。
【问题讨论】:
-
你正在做一个连接,如果你知道连接是如何工作的,你应该知道如果你的帖子有多个图像,那么同一个帖子会有多个元素
-
您需要 oneToMany 关系,或者您可以手动转换数组以删除重复的帖子
-
它为帖子中的每张图片附加帖子。
-
这是一对多的。一篇文章可以有很多张图片。
-
我的意思是一对多 laravel 关系