Table 使用 yajra/laravel-datatables 获取一篇文章的所有评论
Table Bring all comments for one article using yajra/laravel-datatables
当尝试获取 Article::first()
对一篇文章的所有评论时 first()
只带第一篇文章
我尝试像
这样使用 find()
$comments = Article::find()-> commentsArticle()->with('articles');
return Datatables::of($comments)
我遇到错误,所以我如何传递一个值来查看一篇文章的所有评论
要么
我有办法不用 find()
文章模型
class Article extends Model{
public $table = 'articles';
public function commentsArticle() {
return $this->hasMany('App\Comment');
}
}
控制器
enter code here
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Yajra\Datatables\Datatables;
use App\Article;
use App\Comment;
class CommentController extends Controller{
public function commentsForOne Article()
{
$comments = Article::all()->commentsArticle->with('articles');
return Datatables::of($comments)->make(true);
}
}
我得到的最后一个错误
ErrorException (E_DEPRECATED)
Non-static method Yajra\Datatables\Datatables::collection() should
not be called statically
我希望能找到任何类似的想法或例子来帮助我学习
您正在尝试获取第一篇文章及其评论。
public function commentsForOneArticle($id)
{
$article = Article::fine($id);
//check if article exists to avoid errors
if ( $article ) {
return Datatables::of(Comment::where('article_id', $article->id))->make(true);
}
return "no article with id" . $id;
}
这只是一个例子。但似乎您需要先了解 Eloquent 的工作原理。观看这个免费的 Laracast https://laracasts.com/series/laravel-from-scratch-2017/episodes/7
对于路由,你可以这样定义路由:
Route::get('comments/{article_id}', 'ArticleController@commentsForOneArticle');
并在 Ajax 中调用它,就像
$.ajax({url: "/comments/1",
success: function(result){
//do stuff here
},
error: function(error) {
console.log(error)
}
});
所有这些只是一个指南,而不是解决方案。
编辑
一次性带走用户数据
$article = Article::with('user')->find($id);
//will include all the fields from user and article
评论与作者
获取评论作者姓名,需要在评论模型中定义关系
public function user() {
return $this->belongsTo(User::class);
}
然后像这样
if ( $article ) {
return Datatables::of(Comment::with('users')->where('article_id', $article->id))->make(true);
}
当尝试获取 Article::first()
对一篇文章的所有评论时 first()
只带第一篇文章
我尝试像
find()
$comments = Article::find()-> commentsArticle()->with('articles');
return Datatables::of($comments)
我遇到错误,所以我如何传递一个值来查看一篇文章的所有评论
要么
我有办法不用 find()
文章模型
class Article extends Model{
public $table = 'articles';
public function commentsArticle() {
return $this->hasMany('App\Comment');
}
}
控制器
enter code here
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Yajra\Datatables\Datatables;
use App\Article;
use App\Comment;
class CommentController extends Controller{
public function commentsForOne Article()
{
$comments = Article::all()->commentsArticle->with('articles');
return Datatables::of($comments)->make(true);
}
}
我得到的最后一个错误
ErrorException (E_DEPRECATED)
Non-static method Yajra\Datatables\Datatables::collection() should
not be called statically
我希望能找到任何类似的想法或例子来帮助我学习
您正在尝试获取第一篇文章及其评论。
public function commentsForOneArticle($id)
{
$article = Article::fine($id);
//check if article exists to avoid errors
if ( $article ) {
return Datatables::of(Comment::where('article_id', $article->id))->make(true);
}
return "no article with id" . $id;
}
这只是一个例子。但似乎您需要先了解 Eloquent 的工作原理。观看这个免费的 Laracast https://laracasts.com/series/laravel-from-scratch-2017/episodes/7
对于路由,你可以这样定义路由:
Route::get('comments/{article_id}', 'ArticleController@commentsForOneArticle');
并在 Ajax 中调用它,就像
$.ajax({url: "/comments/1",
success: function(result){
//do stuff here
},
error: function(error) {
console.log(error)
}
});
所有这些只是一个指南,而不是解决方案。
编辑
一次性带走用户数据
$article = Article::with('user')->find($id);
//will include all the fields from user and article
评论与作者 获取评论作者姓名,需要在评论模型中定义关系
public function user() {
return $this->belongsTo(User::class);
}
然后像这样
if ( $article ) {
return Datatables::of(Comment::with('users')->where('article_id', $article->id))->make(true);
}