当前位置: 首页 > 知识库问答 >
问题:

用户和评论之间的雄辩关系

穆飞龙
2023-03-14

使用Mac、Php版本7.1.19、最新版本的Laravel和SQLite数据库。该网站有3个模型。用户、评论和帖子。我想将评论连接到用户。这样人们就可以在仪表板上看到自己的评论。数据库应正确设置,注释表具有['id'、'user\u id'、'body'、'created\u at'、'updated\u at']。tinker错误告诉我它需要一个返回,但我为这两个函数都添加了一个返回。

你能详细说明我目前做错了什么吗?

在User.php中,我放置了一个comments函数。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use App\Comment;

class User extends Authenticatable
{


  use Notifiable;

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'firstname','lastname','age', 'email', 'password',
];

public function comments()
{
   return $this->hasMany(Comment::class);
}


/**
 * The attributes that should be hidden for arrays.
 *
 * @var array
 */
protected $hidden = [
    'password', 'remember_token',
];

/**
 * The attributes that should be cast to native types.
 *
 * @var array
 */
protected $casts = [
    'email_verified_at' => 'datetime',
];
}

在Comment.php中,我放置了一个用户函数。

<?php

namespace App;

use App\User;
use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{
    public function user()
    {
       return $this->belongsTo(User::class);
    }
}

更新,请求的数据库模型代码:

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateCommentsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('comments', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->unsignedInteger('user_id');
            $table->string('body');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('comments');
    }
}

用户迁移代码:

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('firstname');
            $table->string('lastname');
            $table->integer('age');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->integer('isAdmin')->default(0);
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('users');
    }
}

使用Php Artisan Tinker时,系统显示以下错误:

应用\用户::first()-

共有1个答案

巩俊远
2023-03-14

数据库模型添加用户表的关系

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateCommentsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('comments', function (Blueprint $table) {
            $table->bigIncrements('id');

            $table->unsignedInteger('user_id');
            $table->foreign('user_id')->references('id')->on('users');

            $table->string('body');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('comments');
    }
}

User.php模型中的更改注释方法

public function comments()
{
   return $this->hasMany(Comment::class,'user_id','id');
}
 类似资料:
  • 我有一个表事务与复合主键id,Nom,日期和一个表Cour与Nom作为主键和一个事务有关一个Cour。 我怎样才能得到一个有口才关系的特定交易的课程?

  • 我有以下三个表格: 所以基本上这种关系就像: 用户有许多项目 项目属性到客户端 我的问题是: 如何使用eloquent获得用户的所有客户端? 似乎我不能用户hasManyPass方法,因为在客户端表中没有project_id。 因此,我希望达到的目标是:

  • 我在我的Laravel项目中与雄辩的关系作斗争。 我的数据库中有一个“用户”表和一个“用户行”表。“用户行”表中有一个“用户id”字段,该字段与“用户”中的“id”字段相对应,属于典型的主-明细关系。 用户模型与用户线模型有很多关系。UserLine模型与用户模型具有belongsTo关系。 在我的应用程序中,我有一个包含多个用户行的用户表单。在表单提交期间,可以添加、更改或删除这些用户行。到目前

  • 我正在编写php代码,对于当前的项目,我正在使用laravel框架(带有雄辩的ORM)。在这个项目中,我创建了两个表:用户和任务。我想在这些表之间创建一个“一对多”的关系。因此,一个用户可以有许多任务。在Tasks类中,我创建了方法所有者(): 但是当我以前得到用户名的时候 我得到这个异常:未定义的属性:illumb\Database\Eloquent\Relations\BelongsTo::$

  • 问题内容: 我试图在Eloquent和Laravel中找到一种优雅的方式来表达 在Eloquent中是否存在一个between运算符(我找不到它)。 我到目前为止最接近的是像这样链接我的查询 我还遇到了似乎可行的地方 是否有处理范围的实际口才方法(不是原始方法)? 问题答案: 在这里查看:http : //laravel.com/docs/4.2/queries#selects 对于Laravel

  • 我正在将我们的一个web应用程序从CodeIgniter转换为Laravel。然而,目前我们不想将/字段添加到我们所有的表中,因为我们有一个日志类,它已经为我们做了更深入的工作。 我知道我可以设置在: 然而,我宁愿不改变Laravel的核心文件,或者让我的每个模型都在顶部。有没有办法在其他地方禁用所有型号?