在Laravel中使2个不同的表共享一个公用表

时间:2019-03-27 14:18:51

标签: php mysql laravel

我想有两个表,一个用于#include <stdio.h> void fib(int num, int *arr, int pos); int main() { int num; printf("Enter any number : \n"); scanf("%d", &num); int arr[num]; if (num > 1) { arr[0] = 0 ; arr[1] = 1 ; } int pos = 2; fib(num, arr, pos); for (int i = 0; i < num; i++) printf("%d ", arr[i]); } void fib(int num, int *arr, int pos) { if (pos < num && pos > 1) { arr[pos] = arr[pos - 2] + arr[pos - 1]; fib(num, arr, pos + 1); } else { return; } } ,一个用于Employees,雇员和公司都应该在站点内注册,因此他们应该在提供的Companies表中有记录与Laravel。我应该如何构建模型之间的关系,应该使用多态关系还是一对一使用?

1 个答案:

答案 0 :(得分:0)

答案是在“用户”表中添加两列:userable_iduserable_typeuserable_id将用于存储实体行idEmployee的行Company,而userable_type将保存{{1} }雄辩模型的路径。

class迁移文件中,添加以下两行:

create_users_table

// ... $table->integer('userable_id')->unsigned(); $table->string('userable_type'); // ... 模型中:

User.php

在您的class User extends Model { // Add this declaration. public function userable() { return $this->morphTo(); } } 模型中:

Company.php
class Company extends Model { // Add this method. public function user() { return $this->morphMany(User::class, 'userable'); } } 模型中的

与上述操作相同:

Employee.php

现在,您应该可以通过运行以下命令来访问class Employee extends Model { // Add this method. public function user() { return $this->morphMany(User::class, 'userable'); } }

user

并使用这种单线方式访问实体:

App\Company::all()->get(1)->user;
// or
App\Employee::all()->get(1)->user;