2017-03-06 64 views
1

時,試圖獲得通過Article::first()first()一個文章的所有評論 只帶了第一篇文章 我嘗試使用find()表使用yajra/laravel-的DataTable帶來一文所有評論

$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 

我希望找到任何想法或例子類似,這將有助於我學習

回答

0

您正在試圖獲得第一文章及其評論。

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; 
} 

這只是一個例子。但似乎你需要首先了解雄辯是如何工作的。關注此免費Laracast https://laracasts.com/series/laravel-from-scratch-2017/episodes/7

對於路線,你可以這樣定義路由:

Route::get('comments/{article_id}', '[email protected]'); 

,並調用它在阿賈克斯一樣

$.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); 
} 
+0

很大,現在怎麼樣路線我想我應該傳遞變量 –

+0

以及如何我可以通過「Ajax」的傳遞變量:「{{路線(」途經此地「)}}」, –

+0

首先,如果有任何答案可以幫助你在Stackoverflow上,你需要加註或者將其標記爲答案。現在對於你的其他問題,你需要學習基本路由:https://laravel.com/docs/5.4/routing#route-parameters然後如果你卡住了,我可以協助但首先嚐試。我不會忘記加註我並標記你的答案。謝謝。 – EddyTheDove

相關問題