Laravel模型:实例还是关系?

时间:2016-10-02 02:12:21

标签: laravel-5.2

我不是专业的程序员,所以我不知道我对此的描述非常好。

使用... - >belongsTo..等语法和函数在模型中建立雄辩关系。

在这些模型的后面,是我数据库中的表。

在我的(laravel)应用程序中,我有一个登录用户需要有关其他用户的某些信息。在一天结束时,他们只是用户,坚持在用户的桌子上。

所以当我使用与另一个物体的关系时,(例如汽车)一切都很好。当我尝试与其他用户建立关系时,我会收到Cannot redeclare class App\Models\User.

等错误

我想我在这里误解了一些东西。

我感觉也许我应该'实例化'另一个版本的用户(作为'经理')...但我真的需要吗?它更像是一个查找而不是其他任何东西。我不确定我是否会知道该怎么做。

请指点一下?

1 个答案:

答案 0 :(得分:0)

听起来你创造了两个截然不同的用户"机型:

// /app/User.php:

<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
    // ...
    public function user() {
        return $this->hasOne('App\Models\User');
    }
}


// /app/models/User.php:

<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
    // ...
    public function user() {
        return $this->belongsTo('App\User');
    }
}

相反,您希望拥有一个属于自己的类:

// /app/User.php:

<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
    // ...
    public function parent() {
        return $this->belongsTo('App\User');
    }

    public function children() {
        return $this->hasMany('App\User');
    }
}

然后在您的数据库中确保users表具有user_id属性(编辑database/migrations/2014_10_12_000000_create_users_table.php):

$table->integer('user_id')->unsigned()->nullable();
$table->foreign('user_id')->references('id')->on('users');

现在您可以将用户彼此关联:

<?php

$manager = new User();
$employeeOne = new User();
$employeeTwo = new User();

$manager->children()->saveMany([
    $employeeOne,
    $employeeTwo
]);

dd( $employeeTwo->parent->name ); // Manager's name