ฉันสามารถเปลี่ยนคีย์หลักรุ่น Eloquent ได้ไหม
ฉันต้องการตั้งค่าคีย์หลักเช่นadmin_id
แทนที่จะเป็น 'id'?
ฉันรู้ว่าฉันสามารถเปลี่ยนชื่อตารางสำหรับรุ่นที่ชอบได้
protected $table = "admin";
คีย์หลักมีอะไรคล้ายกันไหม
ฉันสามารถเปลี่ยนคีย์หลักรุ่น Eloquent ได้ไหม
ฉันต้องการตั้งค่าคีย์หลักเช่นadmin_id
แทนที่จะเป็น 'id'?
ฉันรู้ว่าฉันสามารถเปลี่ยนชื่อตารางสำหรับรุ่นที่ชอบได้
protected $table = "admin";
คีย์หลักมีอะไรคล้ายกันไหม
คำตอบ:
ใช่
class User extends Eloquent {
protected $primaryKey = 'admin_id';
}
$primaryKey = array('key1', 'key1');
github.com/laravel/framework/issues/5517#issuecomment-52996610
class User extends Eloquent {
protected $primarykey = 'admin_id';
}
แต่
class User extends Eloquent {
protected $primaryKey = 'admin_id';
}
สังเกตตัวอักษร K (ตัวพิมพ์ใหญ่) บนตัวแปร $ primaryKey
หากคุณต้องการใช้คีย์ผสม (สตริง)
คุณต้องแน่ใจว่าคุณได้ตั้งค่าpublic $incrementing = false
มิฉะนั้น laravel จะส่งฟิลด์เป็นจำนวนเต็มโดยให้0
class User extends Model {
protected $primaryKey = 'my_string_key';
public $incrementing = false;
}
ตัวแปรคีย์หลักเป็นแบบคำนึงถึงขนาดตัวพิมพ์และต้องใช้$primaryKey
งานได้
ตัวอย่าง:
protected $primaryKey = 'your_primary_key_id';
ตัวอย่างภายในคลาส Model:
class User extends Eloquent {
protected $primaryKey = 'your_primary_key_id';
}
class User extends Eloquent {
protected $primaryKey = 'admin_id';
}
ตามเอกสารของ Laravel:
id
ฝีปากยังจะสมมติว่าแต่ละตารางมีคอลัมน์คีย์หลักชื่อ คุณอาจกำหนด$primaryKey
คุณสมบัติเพื่อลบล้างข้อตกลงนี้
นอกจากนี้ Eloquent ยังถือว่าคีย์หลักเป็นค่าจำนวนเต็มที่เพิ่มขึ้นซึ่งหมายความว่าโดยค่าเริ่มต้นคีย์หลักจะถูกส่งเป็น int โดยอัตโนมัติ หากคุณต้องการใช้คีย์หลักแบบไม่เพิ่มหรือไม่ใช่ตัวเลขคุณต้องตั้งค่า$incrementing
คุณสมบัติสาธารณะในโมเดลของคุณเป็นเท็จ
ในการกำหนดคีย์หลักคุณควร ..->
class User extends Eloquent {
protected $primaryKey='admin_id';
}
$primarykey
ควรเป็น$primaryKey
(ตัวพิมพ์ใหญ่ K) และจะใช้ไม่ได้