我希望在Laravel 5.1中刷新并播种单个表。这甚至可能吗?
我已尝试过以下内容,但它会出错(语法不正确)。
php artisan migrate:refresh --path=database/migrations/CreateTableTimesheet
如果我使用:php artisan migrate:refresh
,它只会说:
无需迁移
答案 0 :(得分:19)
您可以使用migrate:refresh
命令回滚所有迁移,然后执行migrate
命令。此命令有效地重新创建整个数据库:
php artisan migrate:refresh
您可以使用--class
选项指定要单独运行的特定播种器类:
php artisan db:seed --class=UserTableSeeder
完整的代码将是:
php artisan migrate:refresh
php artisan db:seed --class=UserTableSeeder
希望这有帮助。
答案 1 :(得分:0)
也许首先只是备份数据库,删除它并检查整个播种,迁移和刷新机制是否有效。但首先转储工匠自动加载。
答案 2 :(得分:0)
最好先截断同一张表然后再种子:-
public function run()
{
Table::truncate();
//seed your table here
}
然后您可以像这样运行相同的播种机:-
php artisan db:seed --class=YourSeeder
答案 3 :(得分:0)
if (isset($_REQUEST["submit"]))
{
$chk=$_REQUEST["chk"];
$a=implode(",",$chk);
echo $a;
}
?>
<?php
if(isset($_POST['search']))
{
$valueToSearch = $_POST['valueToSearch'];
// search in all table columns
// using concat mysql function
$query = "SELECT * FROM `tb_student` WHERE CONCAT(`student_id`, `student_fname`,
`student_mname`, `student_lname`, `student_course`) LIKE '%".$valueToSearch."%'";
$search_result = filterTable($query);
}
else {
$query = "SELECT * FROM `tb_student`";
$search_result = filterTable($query);
}
// function to connect and execute the query
function filterTable($query)
{
$connect = mysqli_connect("localhost", "root", "", "db_amclms");
$filter_Result = mysqli_query($connect, $query);
return $filter_Result;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>PHP HTML TABLE DATA SEARCH</title>
<style>
table,tr,th,td
{
border: 1px solid black;
}
</style>
</head>
<body>
<form action="search.php" method="post">
<input type="text" name="valueToSearch" placeholder="Search Student"><br><br>
<input type="submit" name="search" value="Search"><br><br>
<table>
<tr>
<th>Id</th>
<th>First Name</th>
<th>Middle Name</th>
<th>Last Name</th>
<th>Course</th>
<th><input type="submit" value="submit" name="submit"></th>
</tr>
<!-- populate table from mysql database -->
<?php while($row = mysqli_fetch_array($search_result)):?>
<tr>
<td><?php echo $row['student_id'];?></td>
<td><?php echo $row['student_fname'];?></td>
<td><?php echo $row['student_mname'];?></td>
<td><?php echo $row['student_lname'];?></td>
<td><?php echo $row['student_course'];?></td>
<td><input type="checkbox" name="chk[]" value="<?php echo $row["student_id"] ?>"> </td>
</tr>
<?php endwhile;?>
</table>
</form>
</body>
将清除状态表
所以你可以做
php artisan tinker
当我不想清除所有表,尤其是用户时,我发现这很有用。
答案 4 :(得分:0)
我认为,到目前为止,没有任何答案可以解决迁移和植入单表的问题。因此,给定迁移文件database/migrations/create_foo_table.php
和包含database/seeds/FooTableSeeder.php
种子类的种子文件FooTableSeeder
,您可以执行以下操作:
php artisan migrate:refresh --path=database/migrations/create_foo_table.php
php artisan db:seed --class=FooTableSeeder
这将回滚,迁移Foo表并为其添加种子。请参阅:Laravel 5.1文档中的rolling back migrations和running seeders(在撰写本文时,Laravel 7.x已经发布,语法没有更改)。
答案 5 :(得分:0)
您可以分两个步骤进行操作:
php artisan migrate:refresh --path=database/migrations/00_create_foo_table.php
database/seeds/DatabaseSeeder.php
中设置的种子表:composer dump-autoload
php artisan db:seed
===附加信息===
您可以在DatabaseSeeder.php
中注释不想使用的播种机:
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
$this->call([
FooSeeder::class,
// BarSeeder::class,
// UserSeeder::class,
]);
}
}
在此示例中,将仅传递database/seeds/FooSeeder.php
。