Laravel 5.4:使用Model Inheritance从子对象中获取父对象

时间:2018-01-31 12:27:42

标签: laravel laravel-5.4

我正在使用Laravel 5.4。

我面临的问题是关于模型继承。

以下是2个类的代码片段:

conn.execute("INSERT INTO kundenname 
('kundename','auftragstyp','auftragsurl','anzahl') VALUES (" + 
str(kundename) +"," + str(auftragstyp) + "," +  str(auftragsurl) + "," 
+ str(anzahl)+")"

注意:此处公司是父类供应商是子类。此外,两个模型都引用相同的表格。

我有一个供应商类的对象(即子类)。

例如:

class Company extends Model{
protected $table = 'companies';
}

class Vendor extends Company{
protected $table = 'companies';
}

如何从现有的Vendor对象中获取Company对象? 因为它们都引用数据库中的相同记录。

1 个答案:

答案 0 :(得分:0)

您可以通过在关系方法中指定字段/列名来解决问题。您可以在声明关系方法时指定确切的键,因此Laravel不会使用它的映射模型/表的约定,例如,您可以在Company模型中使用以下语法{ {1}}关系方法:

many-to-many

在这种情况下,外键应与数据透视表中使用的字段/列名称匹配。现在,您可以从class Company extends Model { public function someMethod() { return $this->belongsToMany( 'App\OtherModel', // name of the other model 'pivot_table_name', // name of the pivot table 'company_id' // this model foreign key 'other_model_foreign_key' // other model foreign key ); } } 个对象的实例调用您的关系方法(someMethod),它可以正常工作,因为Vendor已指定,因此compoany_id将使用该列名称代替Laravel。详细了解this link