为什么laravel不认识我的模特?

时间:2017-05-22 03:07:14

标签: php laravel

我收到此错误消息,“该模型没有查询结果[App \ dummy]。”我相信问题出在控制器中。提交表单时,应该在注释控制器中触发该功能。这个控制器是新的,我相信错误就在这里。那是它停止工作的时候。这是commentController文件:

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

3 个答案:

答案 0 :(得分:0)

您的错误是,您的班级被称为dummy,请您将其用作Dummy,因此将其(文件和班级)重命名为Dummy

class dummy extends Model class Dummy extends Model。{/ p>

请记住,您的文件也应该被调用Dummy.php,而不是dummy.php

答案 1 :(得分:0)

将您的模型类名称更改为exports.getTotalPrice = functions.https.onRequest((req, res) => { admin.database().ref('carresult').once('value').then(function(snapshot) { var totalPrice = snapshot.val().price; res.status(200).send(String(totalPrice)); // <= ADDED String() }); }); ,将文件名称更改为Dummy

这里的主要问题是路线模型绑定。当您尝试添加评论时,Dummy.php对象无法根据您的路线得到解决。您的路线设置不正确或尝试将评论添加到不存在的帖子中。

基本上错误消息$post是因为路由模型绑定为您执行此代码而发生的。

No query results for the model

尝试更改此

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

答案 2 :(得分:0)

问题在于表格。表单中的action属性是这样的:

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

只是让你们知道,当它说“没有查询结果模型[App \ dummy]。”这意味着当我从具有这行代码的虚拟模型中使用此方法时:

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。由于我在动作属性中以我之前解释过的形式犯了错误。