在 Laravel 10 / PHP 8.2 应用程序中,我尝试使用collapse
设置请求将数据收集到一个数组中,其中一些参数发生了更改:
$data = []
FOR(...
$data = Arr::collapse($data, $query->where('some_field', $someParameter)->get()->toArray())
ENDFOR,
但这不起作用,结果数组为空。那么我需要使用其他方法吗collapse
?
在 laravel 10 / php 8.2 时间中我有一个时间字段,并且在模型中我定义了转换:
<?php
namespace App\Casts;
use Carbon\Carbon;
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
use Illuminate\Database\Eloquent\Model;
class TimeCast implements CastsAttributes
{
public function get(Model $model, string $key, mixed $value, array $attributes): mixed
{
return Carbon::parse($value)->format('H:i');
}
public function set(Model $model, string $key, mixed $value, array $attributes): mixed
{
return $value;
}
}
在 Item 模型中:
protected function casts(): array
{
return [
'time' => TimeCast::class,
];
}
我需要 Carbon 值(时间为零)来添加其他时间字段。我这样做:
$calcDate = Carbon::parse(Carbon::now(\config('app.timezone')))->startOfDay();
$calcDate->addDays(5);
$item = Item::find($id);
$dateTill = $calcDate->addMinutes($item->time);
dd(Carbon::parse($dateTill));
但在 $dateTill 中我只看到 $calcDate 值(+5 天,不含时间)。
我该怎么做?
我需要将helper.php
文件添加到我的 laravel 10 应用程序中,并将其添加到autoload-dev
块中:
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/"
}
},
"autoload-dev": {
"files": [
"app/Library/helper.php"
],
"psr-4": {
"Tests\\": "tests/"
这就引发了一个问题:它的位置正确吗?有什么autoload-dev
区别autoload
?
我有 Laravel 11 / vuejs 3 / element-plus 2.9.5” 应用程序,我请求从我的 vue 文件保存表单:
const onSubmit = () => {
console.log(editMode.value)
if (editMode.value) {
console.log(form.title) // I SEE THIS MESSAGE
const updateTask = async () => {
// BUT I DO NOT SEE THESE MESSAGES BELOW_AND_NO_REQUEST_TO_SERVER
console.log('form.title::')
console.log(form.title)
console.log('form.id::')
console.log(form.id)
const formData = new FormData();
formData.append('title', form.title);
...
formData.append("_method", 'PUT');
try {
await router.post(router('admin.tasks.update', form.id), formData, {
preserveUrl: true,
preserveState: true,
preserveScroll: true,
onSuccess: (page) => {
console.log('UPDATE page::')
console.log(page)
resetFormData();
Swal.fire({
toast: true,
icon: "success",
position: "top-end",
showConfirmButton: false,
title: page.props.flash.success
});
}
})
console.log('AFTER UPDATE::')
} catch (err) {
console.log(err)
}
}
}// editMode.value
} // const onSubmit = () => {
我在网上找到了这个例子——我应该发出异步请求吗?
什么代码是正确的?
我的想法是:我实际上不需要定义 updateTask 方法或在调用请求方法时使用异步:
更新区块:
所以我重建了 onSubmit :
const onSubmit = () => {
if (editMode.value) {
console.log('form.id::')
console.log(form.id)
const formData = new FormData();
formData.append('title', form.title);
formData.append('task_category_id', form.task_category_id);
formData.append('priority', form.priority);
formData.append('content', form.content);
formData.append('completed', form.completed);
formData.append('deadline_at', form.deadline_at);
formData.append("_method", 'PUT');
router.post(router('admin.tasks.update', form.id), formData, {
preserveUrl: true,
preserveState: true,
preserveScroll: true,
onSuccess: (page) => {
console.log('UPDATE page::')
console.log(page)
resetFormData();
Swal.fire({
toast: true,
icon: "success",
position: "top-end",
showConfirmButton: false,
title: page.props.flash.success
});
}
})
console.log('AFTER UPDATE::')
}// editMode.value
} // const onSubmit = () => {
但是我得到了错误:
这是什么错误以及如何修复?
我已将 peshanghiwa/vue-awesome-paginate 添加到我的 laravel 11 /vuejs 3 应用程序中,并在 resources/js/app.js 中声明了 VueAwesomePaginate:
import VueAwesomePaginate from "vue-awesome-paginate";
import "vue-awesome-paginate/dist/style.css";
// Vue.component("broadcaster", require("./components/Broadcaster.vue").default);
// Vue.component("viewer", require("./components/Viewer.vue").default);
const appName = import.meta.env.VITE_APP_NAME || 'Laravel';
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import Multiselect from '@vueform/multiselect'
createInertiaApp({
title: (title) => `${title} - ${appName}`,
resolve: (name) =>
resolvePageComponent(
`./Pages/${name}.vue`,
import.meta.glob('./Pages/**/*.vue'),
),
setup({ el, App, props, plugin }) {
return createApp({ render: () => h(App, props) })
.use(plugin)
.use(ZiggyVue)
.use(ElementPlus)
.component('inertia-link', Link)
.component('vue-awesome-paginate', VueAwesomePaginate)
.component('file-upload', VueUploadComponent)
.component('multiselect', Multiselect)
.mount(el);
},
progress: {
color: '#4B5563',
},
});
但是当我在 vue 文件中使用它时:
<template>
...
<div class="p-2" v-show="totalTicketsCount > 1">
<vue-awesome-paginate
:total-items="totalTicketsCount"
:items-per-page="backendItemsPerPage"
:max-pages-shown="5"
v-model="currentPage"
@click="paginateClick"
/>
</div>
</template>
在上面的文件中我没有声明分页组件 - 我认为它必须是全局的......
我在控制台中看到错误:
app.js:44 [Vue warn]: Component is missing template or render function:
{install: ƒ}
at <VueAwesomePaginate total-items=8 items-per-page=2 max-pages-shown=5 ... >
at <PersonalLayout>
at <PersonalTicketsList errors=
{}
auth=
{user: {…}, loggedUserIsAdmin: false, loggedUserIsManager: false, loggedUserIsSalesperson: false}
ziggy=
...
并且分页不可见。
我该如何定义组件才能使其工作?
在 Laravel 11 应用程序中,我从 FrankfurterService 或 ExchangeRateHost 导入货币汇率,切换不同的服务实现检索结果并比较数据,得到的结果略有不同。
首先,我认为差异在于它们以不同的“模式”显示货币汇率:“我们买入”/“我们交易”
之后,一个问题是,如果这个“模式”显示在文档的某个地方
https://exchangerate.host/documentation
和
https://github.com/brunoinds/frankfurter-laravel
?
我没有找到...
我检查了一些货币的结果:
我发现它们有点不同。不确定是“我们购买”/“我们交易”的“模式”还是其他什么?
在这两种情况下,我都显示“源”货币 - “CAD”
我需要使用 Composer 文件中定义的 laravel 应用程序运行:
"require": {
"php": "^8.1",
"laravel/framework": "^10.0",
"tatumio/tatum-php": "^2.0",
在我的 php8.3 和 apache 2 上
但作曲家提出了一个错误:
Problem 1
- Root composer.json requires tatumio/tatum-php ^2.0, found tatumio/tatum-php[dev-master] but it does not match the constraint.
但为什么我会收到这个错误?
存储库https://github.com/tatumio/tatum-php现已存档,在作曲家中我看到
"minimum-stability": "stable",
"prefer-stable": true
但dev-master
在错误信息中......
我如何运行该应用程序?
其他详细信息:
在文件中composer.json
我添加了一个块:
"repositories": [
{
"type": "vcs",
"url": "https://github.com/markjivko/tatum-php"
}
],
不确定type="vcs"
这里是否有效。我还修改了该require
块:
"require": {
"php": "^8.1",
"laravel/framework": "^10.0",
"markjivko/tatum-php": "master",
},
我认为对于包来说markjivko/tatum-php
有效值是master
,但是为什么会出现错误以及哪个是有效的语法?
阅读如何在 laravel 11 应用程序 https://spatie.be/docs/laravel-tags/v4/basic-usage/using-tags中手动使用 spatie 标签
我已经安装了 spatie/laravel-tags 4.7 包保存标签我使用的方法:
$article->syncTags($this->selectedTags, 'article');
但是保存的数据具有不同的格式,我在启动应用程序时在种子中添加了这些数据:
Tag::findOrCreate(['film'], 'article');
我在 slug 和 type 字段中看到不同的值:
看起来 syncTags 方法 slug 和 type 字段以不同的方式填充?
什么问题?如何修复?
在 Laravel 10 / Nova 4.27 应用程序中,我在用户资源中定义了一个头像字段:
Image::make(__('Avatar'), 'avatar')
->disk('local')
->path('public/avatars')
->prunable()
->deletable(true),
当头像字段为空或找不到文件时,如何显示位于 public/img 中的默认头像?
为什么在 Laravel 11 / php 8.2 应用程序中运行代码
$minDay = CurrencyHistory::select(DB::raw('MIN(day) as min_day'))->first()->min_day;
\Log::info($minDay);
\Log::info(Carbon::createFromTimestamp(strtotime($minDay))->format('j F, Y'));
我看到结果:
[2024-10-05 07:30:08] local.INFO: 2024-09-28
[2024-10-05 07:30:08] local.INFO: 27 September, 2024
因此最短天数是2024-09-28
,但我所拥有的表格上的结果值是27 September, 2024
在货币历史模型中我有:
protected $casts = [
'created_at' => 'datetime', 'updated_at' => 'datetime', 'value' => HistoryMoney::class, 'day' => 'date'
];
跟踪 SQL 我有:
SELECT MIN(day) AS min_day
FROM `currency_histories` limit 1
它确实返回了价值2024-09-28
。
格式 'j F, Y' 无效吗?格式相同format('d F, Y'
,结果相同...我该使用哪种格式?
我尝试使用 Http::get 方法从https://climate-api.open-meteo.com服务获取数据,但运行请求方法 getBody 返回 null,而不是数据数组:
$response = Http::get('https://climate-api.open-meteo.com/v1/climate', [
'query' => [
'latitude' => $latitude,
'longitude' => $longitude,
'start_date' => $from->format('Y-m-d'),
'end_date' => $to->format('Y-m-d'),
]
]);
// RETURNS TRUE
\Log::info(varDump($response->successful(), ' -10 $response->successful()::'));
// RETURNS 200
\Log::info(varDump($response->getStatusCode(), ' -11 $response->getStatusCode()::'));
// RETURNS NULL
\Log::info(varDump(json_decode($response->getBody(), true), ' -12 $response->getBody()::'));
发出示例请求,例如:
https://climate-api.open-meteo.com/v1/climate?latitude=40.4165&longitude=-3.7026&start_date=2023-07-09&end_date=2023-07-11&models=CMCC_CM2_VHR4&daily=temperature_2m_max
我获得了有效的数据结构,但没有看到我在 $response->getBody() 方法中获得了无效数据?
我需要在 php 8 中检查配置文件中某些参数是否未注释,包括“;”的情况 符号可以带有空格:
# other settings you may need to change.
; server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
用正则表达式
[\s]*[^;][\s]*server-id[\s]*=[\s]*(.\d)
当“;”之前有空格时,会得到错误的结果 符号,当行被视为注释时:
https://regex101.com/r/n259oJ/1
我尝试在行的开头使用 \A,但失败了。
如何检查“;”之前没有空格 在线上 ?