【问题标题】:How to fix error "No query results for model [App\Posts]"如何修复错误“没有模型 [App\Posts] 的查询结果”
【发布时间】:2019-04-21 18:49:53
【问题描述】:

我收到错误“没有模型 [App\Posts] 的查询结果。”,但模型正确返回结果。我正在尝试使用推送器来发出有关新帖子的事件。

$post = \App\Posts::find(1);
if($post) {
    event(new \App\Events\NewPost($post));
}

事件:

class NewPost implements ShouldBroadcastNow
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    private $post;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct($post)
    {
        $this->post = $post;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new Channel('messages');
    }
    public function broadcastWith() {
        return [
            'id' => $this->post->id
        ];
    }
}

【问题讨论】:

  • 它基本上是整个代码,我想要发出的事件,以及只发送这个事件的控制器中的函数。
  • find(0) 只是个坏例子,我会编辑帖子。在原始代码中,我使用了其他 id,并且数据库返回了良好的结果,但仍然出现此错误。

标签: php laravel eloquent model


【解决方案1】:

数据库中的自动递增 ID 始终从 1 开始而不是零,那么 ID 为 0Post 将永远不存在。然后,Eloquent 没有找到 id 为 0 的记录。

【讨论】:

  • 感谢您的回答,0 是一个例子,不好的例子不是来自原始代码。在使用 var_dump 的原始代码中,我得到了正确的结果。
【解决方案2】:

我找到了解决方案。这个错误是因为 $post 是由 SerializesModels 序列化的。

use Dispatchable, InteractsWithSockets, SerializesModels; 更改为:

use Dispatchable, InteractsWithSockets; 帮忙。

【讨论】:

    【解决方案3】:

    要建立在您使用 SerializesModels 找到的内容之上,这是因为该 trait 强制事件期望它是 JSON 或数组。要在不删除该特征的情况下对其进行排序,您可以在模型上调用 ->toArray()

    像这样:

    event(new NewPost($post->toArray()));
    

    更多写here

    【讨论】:

      猜你喜欢
      • 2018-03-16
      • 2018-09-12
      • 1970-01-01
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      • 2019-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多