您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
调试请求数据并创建project(为基于sail的laravel项目安装phpmyadmin)
发布时间:2024-10-30 12:05:25编辑:雪饮阅读()
-
安装phpmyadmin
由于之前的规划导致咱们在sail使用mysql仍旧还是不太方面,我们需要一个图形化mysql管理。
去phpmyadmin官网https://www.phpmyadmin.net/下载,当前最新是phpMyAdmin-5.2.1-all-languages.zip。
解压后整个phpmyadmin项目路径如
Y:\root\example-app\public\phpMyAdmin-5.2.1-all-languages\phpMyAdmin-5.2.1-all-languages
那么我想要调整的优雅点,就把这个目录里面的所有文件/文件夹拷贝出来于新建目录phpmyadmin521中,则最终路径如
Y:\root\example-app\public\phpmyadmin521
然后这里我就偷懒下,只是临时用,直接777权限了
chmod -R 777 /root/example-app/public/phpmyadmin521
生产环境就谨慎点了。
则此时我们可以访问如
http://localhost/phpmyadmin521/setup/
进行安装,当然这只能是在我们docker容器所在直属宿主机,例如我们这里的centos8的图形化里面的火狐浏览器中进行访问。
当然,我们这里立马就遇到了第一个问题Bzip2。
其实这个界面主要是为了生成配置文件,在下面的download或display分别是下载配置文件,或显示配置文件内容,都是根据你这里手动操作后生成或下载的。
那么对应于config.inc.php,也即就是我们这里的Y:\root\example-app\public\phpmyadmin521\中的config.sample.inc.php修改为config.inc.php
所以我们先new server,主机名先试试mysql,因为这个用docker部署下来的这一套中的.env文件中确实是mysql,应和laravel是相同的。
然后接下来就是在Authentication选项卡里面填写用户名User for config auth,我们也用默认的sail,还有密码Password for config auth,我们也用默认的password。
生产环境时也谨慎了。
那么这个时候我们就可以download刚才的配置会自动下载一个config.inc.php文件,然后放置于如Y:\root\example-app\public\phpmyadmin521\这个目录中,所以上面其实说错了,不用修改,直接下载拷贝到这里岂不是更方便。
上面的Bzip2问题就暂时先不处理了,我们现在可以直接访问如
http://localhost/phpmyadmin521/
然后输入上面我们填写的账号和密码就可以登录的web版的图形化mysql管理工具看到我们laravel中的数据库了。
创建project所需数据表
这里不得不说,其实之前centos7非图形化的时候应该也能直接访问其80端口,只是可能有什么其他原因导致,没有看到注册和登录,或者我当时就没有尝试过这个。
这次我心想反正localhost能访问,那么应该也可以直接访问centos的ip地址。果然这样,所以我们的phpmyadmin面板也可以访问如
http://192.168.217.132/phpmyadmin521/
这里记得一定要加最后那个反斜杠。不然会空白。
然后进去laravel数据库建立数据表如
CREATE TABLE `project` ( `id` int NOT NULL AUTO_INCREMENT, `name` char(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
当然也可以手动界面上操作建立,但需要主要的是这个primary key的时候它有个高级选项弹窗里面最后有个保存按钮好像,一定要点击下,不然你就算是勾选了primary key,那么实际执行sql中是没有的。
创建project的模型
./vendor/bin/sail artisan make:mode Project
虽然能直接在访问宿主机centos8的ip地址,但是如果./vendor/bin/sail npm run dev后就又不行了,和之前一样的情况失去了注册登录。
还是回去centos8的web图形化界面。
创建数据模型后我们需要为数据模型定义其对应的数据表,因为默认情况下对应数据表名是模型名的复数形式,例如这里默认就算projects。
导航如
Y:\root\example-app\app\Models\Project.php中修改如
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Project extends Model
{
protected $table = 'project';
}
当然,我们还需要为模型定义如下
/**
* Indicates if the model should be timestamped.
*
* @var bool
*/
public $timestamps = false;
默认情况下,Eloquent 期望 和 列存在于模型的相应数据库表中。Eloquent 将在创建或更新模型时自动设置这些列的值。如果您不希望 Eloquent 自动管理这些列,您应该在模型上定义一个值为 :created_atupdated_at$timestampsfalse。
而我们这里暂时是不需要的。
优化form组件
接下来我们还需要对我们之前封装的form组件优化下,只保留我们真正需要的。并且提交地址应该是我们的project控制器中的update方法。
则有:
Y:\root\example-app\resources\js\Pages\Project\Partials\UpdateProjectInformationForm.vue如
<script setup>
import InputError from '@/Components/InputError.vue';
import InputLabel from '@/Components/InputLabel.vue';
import PrimaryButton from '@/Components/PrimaryButton.vue';
import TextInput from '@/Components/TextInput.vue';
import { useForm, usePage } from '@inertiajs/vue3';
defineProps({
status: {
type: String,
},
});
const user = usePage().props.auth.user;
const form = useForm({
name: user.name
});
</script>
<template>
<section>
<header>
<h2 class="text-lg font-medium text-gray-900 dark:text-gray-100">
Project Information
</h2>
<p class="mt-1 text-sm text-gray-600 dark:text-gray-400">
Update your account's Project information and email address.
</p>
</header>
<form
@submit.prevent="form.patch(route('project.update'))"
class="mt-6 space-y-6"
>
<div>
<InputLabel for="name" value="Name" />
<TextInput
id="name"
type="text"
class="mt-1 block w-full"
v-model="form.name"
required
autofocus
autocomplete="name"
/>
<InputError class="mt-2" :message="form.errors.name" />
</div>
<div class="flex items-center gap-4">
<PrimaryButton :disabled="form.processing">Save</PrimaryButton>
<Transition
enter-active-class="transition ease-in-out"
enter-from-class="opacity-0"
leave-active-class="transition ease-in-out"
leave-to-class="opacity-0"
>
<p
v-if="form.recentlySuccessful"
class="text-sm text-gray-600 dark:text-gray-400"
>
Saved.
</p>
</Transition>
</div>
</form>
</section>
</template>
建立project的验证请求
我们观察看原来的profile控制器中update是使用了对应的profile的验证请求的,所以我们project也可以照猫画虎。
Y:\root\example-app\app\Http\Requests\ProjectUpdateRequest.php
<?php
namespace App\Http\Requests;
use App\Models\User;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class ProjectUpdateRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\Rule|array|string>
*/
public function rules(): array
{
return [
'name' => ['required', 'string', 'max:255']
];
}
}
完善控制器的update方法
接下来我们需要在我们project控制器中的upate方法来实现project的入库。
Y:\root\example-app\app\Http\Controllers\ProjectController.php
中的update方法则如:
/**
* Update the user's profile information.
*/
public function update(ProjectUpdateRequest $request): RedirectResponse
{
$this->log(var_export($request->user(),true));
$this->log("uid:".$request->user()->id);
$uid=$request->user()->id;
$name=$request->input("name");
$project=new Project();
$project->uid=$uid;
$project->name=$name;
$project->save();
return Redirect::route('project.edit');
}
完善project的update路由
最后就是在web路由中对于auth路由组中增加我们的project控制器的update方法对应的路由条目。
Route::patch('/project', [ProjectController::class, 'update'])->name('project.update');
最后回到界面http://localhost/project
中输入project的name进行save后就可以在phpmyadmin中查看到laravel数据库中的project数据表中就有数据记录了。
本期词汇
laravel 一个免费的开源 PHP Web 框架
artisan 工匠,技工
Eloquent 雄辩的,口才流利的
关键字词:laravel,phpmyadmin,sail
相关文章
- project-create相关的路由及controller定义(laravel-b
- 前端form组件的介绍(laravel11中的breeze的form实现)
- vite刷新慢的解决办法(laravel的sail部署中mysql容器
- 创建project相关的视图与数据库设计(laravel入门套件B
- MVC介绍及创建数据模型(laravel在命令行中创建模型)
- 连接数据库,以及users表相关的数据结构(了解laravel的Br
- 开启注册登陆功能(解决laravel安装Breeze后没有注册、
- laravel环境变量的原理、优势及项目配置
- docker开发环境搭建(docker环境下创建laravel)
- 课程介绍(laravel9,laravel10,laravel11)