Laravel 4:保存多态关系的记录:未定义的方法 newQuery()

laravel

1个回答

写回答

xayira

2025-07-03 12:30

+ 关注

Laravel
Laravel

使用 Laravel 4 时,我们经常会遇到需要保存多态关系的记录的情况。然而,在尝试保存这些记录时,有时会遇到一个错误信息,即“未定义的方法 newQuery()”。本文将介绍如何解决这个问题,并提供实际案例代码。

错误信息:未定义的方法 newQuery()

当我们尝试使用 Laravel 4 的多态关系功能时,有时会遇到一个错误信息,即“未定义的方法 newQuery()”。这个错误通常发生在我们尝试将多态关系保存到数据库时。解决这个问题的方法是使用 morphTo 方法的 getResults 函数来替代 newQuery 方法。

解决方法:使用 getResults 替代 newQuery

在 Laravel 4 中,多态关系使用 morphTo 方法来定义。然而,在保存多态关系到数据库时,我们需要用到 newQuery 方法来创建一个新的查询构造器。而在某些情况下,newQuery 方法可能会出现未定义的错误。

为了解决这个问题,我们可以使用 getResults 方法来替代 newQuery 方法。getResults 方法将返回一个查询构造器的实例,我们可以在此基础上继续进行查询操作。

让我们来看一个具体的案例,以更好地理解如何解决这个问题。

案例代码

假设我们有两个模型:User 和 Comment。User 模型有一个多态关系字段 commentable,用于存储评论的相关信息。在保存评论时,我们希望能够正确地保存多态关系到数据库中。

php

class User extends Eloquent {

public function comments()

{

return $this->morphMany('Comment', 'commentable');

}

}

class Comment extends Eloquent {

public function commentable()

{

return $this->morphTo();

}

}

在保存评论时,我们可以使用以下代码:

php

$user = User::find(1);

$comment = new Comment;

$comment->content = 'This is a comment.';

$user->comments()->save($comment);

在上面的例子中,我们使用 save 方法将评论保存到 User 模型中。通过使用 getResults 方法,我们可以正确地保存多态关系到数据库,并避免了“未定义的方法 newQuery()”错误。

在使用 Laravel 4 保存多态关系的记录时,有时会遇到一个错误信息,即“未定义的方法 newQuery()”。为了解决这个问题,我们可以使用 morphTo 方法的 getResults 函数来替代 newQuery 方法。通过这种方式,我们可以正确地保存多态关系到数据库,并避免了错误的发生。

希望本文对你在使用 Laravel 4 保存多态关系的记录时有所帮助!

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号