我的数据库中有3个表:
一家公司可能有一些用户.一个用户可能有一些活动.用户(具有管理员权限)可以对属于其公司的任何广告系列执行某些操作.所以,我想检查他是否正在与他的竞选活动一起做这些行动(在最后一种情况下,我返回的内容如"拒绝访问").
我的病情
Campaign::join('users', 'users.id', '=', 'campaigns.user_id')
->where('users.company_id', '=', Auth::user()->company->id)
->where('campaigns.id', '=', Input::get('id'))
->first();
Run Code Online (Sandbox Code Playgroud)
因此,如果我获得了独特的广告系列 - 没关系,如果我得到了空 - 出了点问题,我向用户发送了"拒绝访问权限",因为他正在处理其他公司广告系列.
此代码生成下一个查询:
array(3) {
["query"]=>
string(148) "select * from `campaigns` inner join `users` on `users`.`id` = `campaigns`.`user_id` where `users`.`company_id` = ? and `campaigns`.`id` = ? limit 1"
["bindings"]=>
array(2) {
[0]=>
string(1) "2"
[1]=>
string(2) "13"
}
["time"]=>
float(0.42)
}
Run Code Online (Sandbox Code Playgroud)
使用phpmyadmin我尝试了相同的查询并获得了ID = 13的广告系列.但是当我调试我的应用程序时,我发现了这一点
dd($campaign->id);
Run Code Online (Sandbox Code Playgroud)
而是返回8.8也等于campaigns.user_id(记录有campaigns.id和campaigns.user_id = 8).
我无法弄清楚为什么会这样.即使我的SQL查询有问题(我怀疑是phpmyadmin返回正确的结果),我得到了条件campaigns.id = Input::get('id'),在哪里Input::get('id') …
在select2 4.0版本中有一个主题选项.但是在文档中我找不到该选项意味着什么,我怎样才能创建自定义主题(https://select2.github.io/examples.html)
我发现select2的bootstrap 3主题,但它似乎只适用于3.5版本.
那么我可以为select2最新版本(4.0)创建自定义主题吗?基本上我需要bootstrap 3样式,最好是LESS文件
想象一下,你在控制器中有一个方法,比如存储一个新公司.还想象一下,我们可以从我们网站的不同页面创建新公司.例如,我可以创建2-3页的公司.
根据我创建公司的位置,我需要有不同的重定向.有时我需要重定向,有时需要重定向到其他路线.
就像是:
if ($previousRoute === 'companies.index') {
return redirect()->back();
} else {
return redirect()->route('someroute');
}
Run Code Online (Sandbox Code Playgroud)
我想我无法得到用户来自的路线名称.如果我检查引用网址,那么万一我改变路由网址,一切都会被破坏,所以我想依赖路由名称.此外,具有许多"if-s"或"开关"的解决方案有点奇怪,它会污染代码.
还需要通配符支持.某种带有重定向的路线图或类似的东西.
有任何建议如何实现这个?
我正在尝试在本地计算机上设置一个由 caddy + PHP 组成的开发环境。
docker-compose.yaml:
version: '3'
services:
app:
build:
context: .
container_name: app
restart: unless-stopped
tty: true
environment:
SERVICE_NAME: app
SERVICE_TAGS: dev
volumes:
- ./:/var/www
- ./docker/php/local.ini:/usr/local/etc/php/conf.d/local.ini
webserver:
image: caddy
container_name: webserver
restart: unless-stopped
tty: true
ports:
- "80:80"
- "443:443"
volumes:
- ./:/srv
- ./docker/caddy/Caddyfile/:/etc/caddy/Caddyfile
db:
image: mysql:8.0
container_name: db
restart: unless-stopped
tty: true
ports:
- "3306:3306"
environment:
MYSQL_USER: pingr
MYSQL_DB: pingr
MYSQL_PASSWORD: pingr
MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
volumes:
- dbdata:/var/lib/mysql
volumes:
dbdata:
driver: local
Run Code Online (Sandbox Code Playgroud)
应用程序服务的 Dockerfile:
FROM php:7.4-fpm …Run Code Online (Sandbox Code Playgroud) 我使用带有插件的Vue 2@vue/composition-api。
我做了一个简单的可组合项:
import { ref } from '@vue/composition-api'
export function useRfp() {
const files = ref([])
return {
files
}
}
Run Code Online (Sandbox Code Playgroud)
我更新了使用此可组合项的组件中的文件数组,如下所示:files.value = ...
但是,它仅在可组合项如下所示时才有效:
import { ref } from '@vue/composition-api'
const files = ref([]) // <-- Notice the const is outside the useRfp function
export function useRfp() {
return {
files
}
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么会发生这种情况,因为在 VueJS 文档中,他们有一个鼠标跟踪器的示例,该示例在函数内使用 refs:
// mouse.js
import { ref, onMounted, onUnmounted } from 'vue'
// by convention, composable function names start …Run Code Online (Sandbox Code Playgroud) 我使用 Laravel 框架,但实际上这无关紧要。问题是我为什么要使用数据库迁移以及如何在开发应用程序时正确使用数据库。
例如,我正在构建一个大型 Web 应用程序,最终将包含 30 多个表。一开始我根本没有数据库,我刚刚开始构建它。进行以下迁移似乎不是一个好方法:1. 添加用户表 2. 将 regdate 字段添加到用户表 3. 添加用户权限表 4. 忘记向用户和权限表添加外键约束(链接ids) 5. 添加照片表...
首先,在第一步,我将在诸如 mysql workbench 之类的工具中一次制作大部分表格。比如说,15 张桌子。我会在 Laravel 中称其为“数据库初始化”迁移吗?
然后如果我需要同步我的更改,我会用工作台来做,因为它有这样的功能,所以不会出现任何人为错误。如果我与团队一起工作,我可以在某处共享工作台模型,请将其删除(不确定是否可以加载远程模型,我不是工作台专家,但无论如何,如果我更改了某些内容,我可以上传更改)。
唯一的缺点是我不能回滚,但是 1. 不确定我是否真的需要这个功能,通常我记得我的更改,我可以删除它们并再次通过工作台 2 同步。我可以保存很多工作台文件做同样的事情像laravel一样的迁移系统
但我喜欢的是我可以一次看到所有数据库的所有关系,我可以轻松管理它(无需编写代码)
我有一个包含很多表的 mysql 数据库。每个表都有 InnoDB 格式。我有一张名为“公司”的表。每个公司都有一个账户,账户有交易,还有很多其他相关的表。
我想删除一些公司以及与它们相关的所有数据。每个外键在删除事件上都有“NO ACTION”。
如何在不为每个外键手动设置 ON DELETE CASCADE 的情况下临时删除所有关系?
有人可以解释在Laravel 5中管理资产的正确方法吗?例如,让我们想象一下我想使用bower安装一些插件.我得到的推荐方法是保留所有文件/vendor/bower_components.所以我得到了一些css,一些图像,字体和javascript文件与插件.
此外,我有一个"app.less",我导入我需要的一切,如@import ('../../../vendor/bower_components/someplugin/somestyle.css').问题虽然我的公共目录中没有images/js/fonts.好的,我看到你可以使用gulp copy功能了.但是,当插件数量越来越多时,我应该如何管理每个插件保存其图片或其他文件的位置?
其实我想尝试语义ui.我用凉亭下载了它.我对语义ui一无所知,但是有一个带有semantic-ui.css的dist文件夹.还有一些字体文件themes/basic/assets/fonts.如果我只是将它复制到公众,那就是public/themes/basic/assets/fonts.然后我将semantic-ui.css导入我的app.les,它会找到必要的字体.如果我有其他一些插件,那么管理它会变得无法忍受.
这个问题的典型工作流程是什么?最简单的方法就是将所有内容公开,并使用<link>和<script>标记手动包含它,但它需要大量的查询.
为什么将所有bower_components保留在公共场所是不好的?在作曲家的比喻中,我们没有凉亭的自动加载器,所以有一堆资产.
为了更新数据透视表中的单个记录,我使用updateExistingPivot方法.然而,它需要$ id作为第一个参数.例如:
$step->contacts()->updateExistingPivot($id, [
'completed' => true,
'run_at' => \Carbon\Carbon::now()->toDateTimeString()
]);
Run Code Online (Sandbox Code Playgroud)
但是如何一次更新数据透视表中的多个现有行?
在这个例子中:
const resolved = this.$router.resolve({
name: 'about'
})
console.log(resolved.route.path)
Run Code Online (Sandbox Code Playgroud)
是否可以获取包含原点的路线?就像,如果 url 是site.com/about,代码会给出/about,所以我需要自己附加 origin: window.location.origin + resolved.route.path。