如何在laravel 8中使用复合主键?
How to use composite primary key in laravel 8?
我没有使用迁移文件,因为我在数据库中有预先存在的表,我想知道如何强制 laravel 使用我的复合主 key.if 有任何方法可以覆盖.
复合主键为(Tel + number_str )
这是我在模型中的功能:
public function saveData(){
$response = new ResponseModel();
//Primary key(Tel + number_str )
$reponse->Tel = '0123456789';//---> the first key
$reponse->number_str = '1'; //---> the second key
$reponse->view = '0';
$reponse->channal = '0';
$reponse->save();
}
当我执行时出现这个错误:
Yajra\Pdo\Oci8\Exceptions\Oci8Exception
Error Code : 904
Error Message : ORA-00904: "ID": invalid identifier Position : 98 Statement : insert into "RESPONSE" ("TEL", "number_str", "view", "channal ") values (:p0, :p1, :p2, :p3) returning "ID" into :p4 Bindings : [0123456789,1,0,0,0]
Laravel 附带 Eloquent ORM,而 Eloquent 不支持组合键。如果您打算覆盖 Eloquent 方法以支持它们,则需要覆盖 很多 核心方法以保持一切正常工作。
现在,Eloquent 不是与数据库交互的唯一选择。您仍然可以使用查询生成器来执行您的操作。但当然没有 ORM 的好处。
DB::table('response')->insert([
'tel' => '0123456789',
'number_str' => 1,
'view' => 0,
'channel' => 0,
]);
DB::table('response')
->where('tel', '0123456789')
->where('number_str', 1)
->get();
Laravel 8,接受以下格式
DB::table('response')
->where('tel' ,'=', '0123456789')
->where('number_str', '=' ,1)
->get();
我没有使用迁移文件,因为我在数据库中有预先存在的表,我想知道如何强制 laravel 使用我的复合主 key.if 有任何方法可以覆盖. 复合主键为(Tel + number_str ) 这是我在模型中的功能:
public function saveData(){
$response = new ResponseModel();
//Primary key(Tel + number_str )
$reponse->Tel = '0123456789';//---> the first key
$reponse->number_str = '1'; //---> the second key
$reponse->view = '0';
$reponse->channal = '0';
$reponse->save();
}
当我执行时出现这个错误:
Yajra\Pdo\Oci8\Exceptions\Oci8Exception
Error Code : 904
Error Message : ORA-00904: "ID": invalid identifier Position : 98 Statement : insert into "RESPONSE" ("TEL", "number_str", "view", "channal ") values (:p0, :p1, :p2, :p3) returning "ID" into :p4 Bindings : [0123456789,1,0,0,0]
Laravel 附带 Eloquent ORM,而 Eloquent 不支持组合键。如果您打算覆盖 Eloquent 方法以支持它们,则需要覆盖 很多 核心方法以保持一切正常工作。
现在,Eloquent 不是与数据库交互的唯一选择。您仍然可以使用查询生成器来执行您的操作。但当然没有 ORM 的好处。
DB::table('response')->insert([
'tel' => '0123456789',
'number_str' => 1,
'view' => 0,
'channel' => 0,
]);
DB::table('response')
->where('tel', '0123456789')
->where('number_str', 1)
->get();
Laravel 8,接受以下格式
DB::table('response')
->where('tel' ,'=', '0123456789')
->where('number_str', '=' ,1)
->get();