gpt4 book ai didi

php - 如何播种自引用表 Laravel 5.1

转载 作者:可可西里 更新时间:2023-10-31 23:29:56 25 4
gpt4 key购买 nike

如何从同一个表中为一个表添加两个外键,例如消息:

迁移:

    public function up()
{
Schema::create('messages', function (Blueprint $table) {
$table->increments('id');
$table->integer('to')->unsigned();
$table->integer('from')->unsigned();
$table->integer('parent_id')->unsigned()->nullable();
$table->text('body');
$table->boolean('status')->default(false);
$table->timestamps();
});

Schema::table('messages', function (Blueprint $table) {
$table->foreign('to')
->references('id')->on('users')
->onDelete('cascade');

$table->foreign('from')
->references('id')->on('users')
->onDelete('cascade');

$table->foreign('parent_id')
->references('id')->on('messages');

});
}

模型工厂:

$factory->define(App\Message::class, function($faker) {

return [
'body' => $faker->text
'from' => //user id,
'to' => //user id,
'parent_id' => //message id
];

});
  1. 如何在这里获取用户 ID?
  2. 如何获取该 ID 的现有消息行?

最佳答案

$messages = factory(App\Message::class, 20)->create();
$messageIds = DB::table('messages')->lists('id'); // returns array of userids
DB::table('categories')->where('id', $rowid); // where $rowid is the id which you want

完整的解决方案是这样的

class MessagesTableSeeder extends Seeder
{
public function run()
{
// start with some cleanup
DB::table('messages')->truncate();
// Create some App\Message instances...
$messageCount = 30;
$messages = factory(App\Message::class, $messageCount)->create();
$messageIds = DB::table('messages')->lists('id');
for($i=0; $i<$messageCount - 1; $i++) {
$randomizedMessageIds = $messageIds;
shuffle($randomizedMessageIds);
DB::table('messages')->where('id', $i)->update(['parent_id'=>$randomizedMessageIds[$i]]);
}
}
}

关于php - 如何播种自引用表 Laravel 5.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31080768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com