2017-05-22 4 views
0

Ich bekomme diesen Fehler, der sagt, "Keine Abfrageergebnisse für das Modell [App \ dummy]." Ich glaube, das Problem liegt im Controller. Wenn Sie das Formular absenden, soll es die Funktion im Kommentar-Controller auslösen. Dieser Controller ist neu, ich glaube der Fehler ist hier drin. Damals hörte es auf zu arbeiten. Hier ist die Datei Comment:Warum erkennt Laravel mein Modell nicht?

<?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')); 
    } 
} 

Ich versuchte App \ Dummy Klein machen, so dass es App \ Attrappe war, aber immer noch hat es nicht funktioniert. Es gibt mir immer noch den Fehler.

Hier ist mein Dummy-Modell:

<?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

zeigen Sie Ihre Modelldatei hier –

+0

@Kris Roofte Ich habe mein Dummy-Modell auf dem Hauptpost veröffentlicht. – Lami

Antwort

0

Das Problem in Form war zu verändern. Das action-Attribut in Form war so etwas wie dieses:

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

Ich dachte, dass die ID erhalten würde, weil ich die ID in die Variable $ id verdichtet. Aber dann habe ich die URL überprüft und nicht eine Zahl bemerkt, sondern das eigentliche Wort $ id. So, hier ist die Lösung: „Keine Abfrage-Ergebnisse für das Modell [App \ Dummy]“

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

Nur, damit ihr wisst, dass, wenn es sagt, Es bedeutete, dass, wenn ich diese Methode von dem Dummy-Modell verwendet, die diese Codezeile hatten:

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

es nicht den Primärschlüssel aus der Attrappen Tabelle finden konnte. Daher konnte keine Verbindung mit dem Fremdschlüssel, der die Post-ID aus der Kommentartabelle ist, hergestellt werden. Daher war es nicht möglich, den neuen Kommentar in die Tabelle für diesen einzigartigen Blogpost einzugeben. Dies ist der letzte Teil, der den Kommentar an den Tisch trägt:

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

durch die Art und Weise Kommentare() ist die Methode, die ich geschaffen, dass ich vor gerade zeigte.

Fazit

Es ziemlich blieb in der web.php Datei (Routing-Datei) zu arbeiten, weil es nicht war eine ID zu bekommen. Wegen des Fehlers, den ich im Aktionsattribut in der Form gemacht habe, die ich vorher erklärt habe.

0

Ihr Fehler ist, dass Ihre Klasse aufgerufen wird dummy kaufen Sie es als Dummy verwenden, so dass es sowohl (Datei und Klasse) umbenennen, um Dummy.

Diese class dummy extends Model zu diesem class Dummy extends Model.

Denken Sie daran, dass Ihre Datei Dummy.php auch aufgerufen werden soll, nicht dummy.php

+0

Ich habe gerade getan, was Sie getan und meine Datei namens Dummy.php gemacht und auch die Klasse Dummy erweitert erweitert Modell zu Klasse Dummy erweitert Modell und es hat immer noch nicht funktioniert: (( – Lami

+0

) Zeigen Sie uns in Ihrer Frage Ihre tatsächliche Hierarchie, Sie haben etwas falsch damit – matiaslauriti

0

zu Ihrem Modell Klassennamen ändern Dummy und Dateinamen Dummy.php.

Ihr Hauptproblem ist hier die Routenmodellbindung. Wenn Sie versuchen, einen Kommentar hinzuzufügen, wird das Objekt $post basierend auf Ihrer Route nicht aufgelöst. Sie haben eine Route Setup oder versuchen, einen Kommentar zu einem nicht vorhandenen Beitrag hinzuzufügen.

Grundsätzlich passiert die Fehlermeldung No query results for the model wegen dieses Codes, den die Route Model Bindung für Sie tut.

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

Versuchen Sie, diese

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

public function store(Dummy $dummy) 
Verwandte Themen