2017-05-22 56 views
0

我得到這個錯誤,說:「模型[App \ dummy]沒有查詢結果。」我相信問題出在控制器上。當你提交表單時,它應該在評論控制器中觸發該功能。這個控制器是新的,所以我相信錯誤在這裏。那是當它停止工作。這裏是commentController文件:爲什麼不laravel識別我的模型?

<?php 

namespace App\Http\Controllers; 

use App\Dummy; 
use Illuminate\Http\Request; 
use Illuminate\Support\Facades\DB; //this one is for sql builders 

use App\Comments; 
use Illuminate\Http\RedirectResponse; 
use DateTime; //to create a new date object you need to include this namespace 



class commentController extends Controller 
{ 
    public function store(Dummy $post){ 
    $date = new DateTime(); 
    $timestamp = $date->getTimestamp(); 
    $id = $post->id; 

    $post->addComment(request('body')); 

    return view('post', compact('post', 'timestamp', 'id')); 
    } 
} 

我試着讓App \ Dummy小寫,所以它是App \ dummy,但它仍然沒有工作。它仍然給我錯誤。

這裏是我的假人模型:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class dummy extends Model 
{ 
    protected $guarded = []; 

    public function comments(){ 
     return $this->hasMany(Comments::class, 'post_id'); 

    } 

    public function addComment($body){ 
     $this->comments()->create(compact('body')); 
    } 
} 
+0

在這裏顯示您的模型文件 –

+0

@Kris Roofe我在主要帖子上張貼了我的虛擬模型。 – Lami

回答

0

的問題是形式。在表單中的動作屬性是這樣的:

<form class="col s12" action={{ url('/post/$id/comments') }} method="post"> 

我認爲這將得到id,因爲我壓縮了id到變量$ id。但後來我檢查了網址,發現不是一個數字,而是實際的單詞$ id。所以,這裏是解決方案:「不爲模型[應用程序\虛擬]查詢結果」

<form class="col s12" action={{ url('/post/' . $post->id . '/comments') }} method="post"> 

只是讓你們知道,當它說,這意味着,當我從虛擬模型,有這行代碼中使用此方法:

public function comments(){ 
    return $this->hasMany(Comments::class, 'post_id'); 
} 

它找不到從假人表的主鍵。因此無法使用註釋表中的post_id外鍵連接。所以,它無法將新評論提交給該獨特博客文章的表格。這是提交評論到表格的最後一部分:

public function addComment($body, $name){ 
     $this->comments()->create(compact('body', 'name')); 
    } 

順便說一句comments()是我創建的方法,我剛纔展示過。

結論

它幾乎停在web.php文件(路由文件)工作,因爲它沒有得到一個id。由於我在前面解釋過的表單中的action屬性中犯的錯誤。

0

你的錯誤是你的類被稱爲dummy買你正在使用它作爲Dummy,所以兩者(文件和類)重命名爲Dummy

This class dummy extends Model to this class Dummy extends Model

記住,你的文件應該被稱爲Dummy.php也沒有dummy.php

+0

我只是做了你所做的事情,並將我的文件命名爲Dummy.php,並且還將類dummy將Model擴展爲Dummy extends Model,但它仍然無效:(( – Lami

+0

)向我們展示您的實際層次結構,那是錯的 – matiaslauriti

0

模型類名稱更改爲Dummy和文件名Dummy.php

您的主要問題是路由模型綁定。當您嘗試添加評論時,$post對象沒有根據您的路線得到解決。您的路線設置不正確或嘗試向不存在的帖子添加評論。

基本上,錯誤消息No query results for the model是由於路由模型綁定爲您執行的代碼而發生的。

$post = Dummy::findOrFail($id); 

嘗試改變這種

Route::post('post/{dummy}/comments', '[email protected]'); 

public function store(Dummy $dummy) 
相關問題