我不是专业的程序员,所以我不知道我对此的描述非常好。
使用... - >belongsTo..
等语法和函数在模型中建立雄辩关系。
在这些模型的后面,是我数据库中的表。
在我的(laravel)应用程序中,我有一个登录用户需要有关其他用户的某些信息。在一天结束时,他们只是用户,坚持在用户的桌子上。
所以当我使用与另一个物体的关系时,(例如汽车)一切都很好。当我尝试与其他用户建立关系时,我会收到Cannot redeclare class App\Models\User.
我想我在这里误解了一些东西。
我感觉也许我应该'实例化'另一个版本的用户(作为'经理')...但我真的需要吗?它更像是一个查找而不是其他任何东西。我不确定我是否会知道该怎么做。
请指点一下?
答案 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