我正在使用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对象? 因为它们都引用数据库中的相同记录。
答案 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。