我是laravel的新手.我正在开发一个laravel 5应用程序,我被困在这里.我有2个模型:
class Message extends Eloquent{
public function user()
{
return $this->belongsTo('App\User', 'from');
}
public function users()
{
return $this->belongsToMany('App\User')->withPivot('status');
}
}
class User extends Eloquent {
public function messages()
{
return $this->hasMany('App\Message', 'from');
}
public function receive_messages() {
return $this->belongsToMany('App\Message')->withPivot('status');
}
}
Run Code Online (Sandbox Code Playgroud)
Message和User之间存在多对多关系,为我提供了一个数据透视表:
Table Name: message_user
Colums:
message_id
user_id
status
Run Code Online (Sandbox Code Playgroud)
我有一个SQL查询:
update message_user
set status = 1
where user_id = 4 and message_id in (select id from messages where message_id = 123)
Run Code Online (Sandbox Code Playgroud)
如何将此查询转换为laravel等效项?
我是laravel 5的新手.我正在开发一个项目,我希望为每个应用程序分配一些随机可读的唯一字符串.我知道可以用作种子的每个应用程序ID.由于该应用程序将在公司内使用,我不担心安全性.我希望表的大小能够增长,所以我的目标是尽可能地实现唯一性,因为DB中的字段是唯一的.像(EN1A20,EN12ZOV等)的代码.如果函数可以允许我传递我想要返回的字符串的长度,那真的很棒.
编辑 下面显示的是我对此问题的尝试
private function generate_app_code($application_id) {
$token = $this->getToken(6, $application_id);
$code = 'EN'. $token . substr(strftime("%Y", time()),2);
return $code;
}
private function getToken($length, $seed){
$token = "";
$codeAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$codeAlphabet.= "0123456789";
mt_srand($seed); // Call once. Good since $application_id is unique.
for($i=0;$i<$length;$i++){
$token .= $codeAlphabet[mt_rand(0,strlen($codeAlphabet)-1)];
}
return $token;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码可以解决这个问题吗?
编辑
实际上我从这篇文章中借用了一些想法PHP:如何生成一个随机的,唯一的,字母数字字符串?提出上述方法但该帖子并未完全解决我的问题.我的目标是生成一个长度为6到8的字符串(字母数字和可读).我的管理员将使用此字符串进行查询.在我的函数中,我有mt_srand($ seed)来种子随机数生成器,其中seed是我的application_id.可以获得重复的$ token.
感谢帮助.
我正在使用laravel的ResetsPasswords特性来实现密码重置.我想要实现的是使用队列发送电子邮件.通过代码挖掘我在函数postEmail()中找到了以下行:
$response = Password::sendResetLink($request->only('email'), function (Message $message) {
$message->subject($this->getEmailSubject());
});
Run Code Online (Sandbox Code Playgroud)
进一步挖掘我注意到sendResetLink()函数是在PasswordBroker类中实现的,而PasswordBroker类又调用函数emailResetLink().emailResetLink函数返回以下内容:
return $this->mailer->send($view, compact('token', 'user'), function ($m) use ($user, $token, $callback) {
$m->to($user->getEmailForPasswordReset());
Run Code Online (Sandbox Code Playgroud)
我可以简单地mailer->send
改为mailer->queue
.如果不修改这个非项目文件,它们是更好的方法吗?
我正在使用Google recaptcha V2 API.我注册了域名divostar.com,127.0.0.1,一切正常.现在,我添加了一个新域10.25.0.1,它似乎不适用于此.我收到了错误ERROR for site owner: Invalid domain for site key
.每个域每行写一个.真的可能是什么问题?
最近,我注意到我的 laravel 5 应用程序出现了一个非常令人不安的情况,我似乎无法弄清楚。在登录期间,我像这样在会话中设置了 user_type 变量
Session::put('is_supervisor', $user->is_supervisor);
Run Code Online (Sandbox Code Playgroud)
在我的 config/session.php 文件中,我有以下配置:
'lifetime' => 120,
'expire_on_close' => false,
Run Code Online (Sandbox Code Playgroud)
我还实现了记住我的功能。
我以主管用户身份登录,并选中了“记住我”。几个小时后,我关闭浏览器而不注销并再次启动,因为expire_on_close
设置为 false 并记住我被选中,因此按预期登录了用户配置文件。但是,我注意到 is_supervisor 变量在会话中不再存在,所以我必须注销并再次登录才能让变量回到会话中。可能是什么问题呢?我使用文件作为我的会话驱动程序。
我是laravel的新手.最近,我为我的应用程序创建了我的ER图.在学习laravel时,我发现它们在模式构建器中具有创建created_at和updated_at列的时间戳属性.根据我的建模,我不需要这些额外的列,因此必须拥有它们或者在每个表上都有这些列的好处.
我最近将我的laravel应用程序从5.1升级到5.4.我的服务器现在是PHP 7和Maria db 10.1.22.现在我得到一个非常奇怪的错误.有时候,我会尝试刷新浏览器并显示PHPMyAdmin #1040 - Too many connections
.其他时候我会点击我的应用程序上的新链接,然后会得到同样的错误.我在互联网上做了一些研究并执行了以下命令:
show variables like 'max_connections`
Run Code Online (Sandbox Code Playgroud)
上面的命令给出了100.然后我增加到500.
但现在我仍然得到错误.这对我来说很奇怪,因为我在另一台服务器上安装了oracle mysql 5.6并且max_connections是151,并且超过一年半我没有遇到过这个错误.
当我运行命令时show processlist
,我得到下面的结果,并且这种情况不断增加.这是正常的吗?
可能是Mariadb的问题,我该如何解决它.
我一直在阅读软件开发方法论。我碰到一条线,说敏捷方法包括Rational Unified Process,Scrum,Crystal Clear,Extreme Programming,自适应软件开发,功能驱动开发和动态系统开发方法(DSDM)。我想知道的是RUP是否应该在列表中。
我是laravel 5的新手.我创建了一个用于编辑用户信息的表单,其中填充了来自数据库的信息.在表单验证后,如果我收到错误,我将丢失刚修改的所有信息,并恢复db信息.
我的表单字段如下所示:
<input type="text" name="name" value="{{ $user->name }}" id="name" class="form-control"/>
Run Code Online (Sandbox Code Playgroud)
我希望看到的是这个.如果在编辑期间,用户从字段中清除用户名,并对表单上的不同字段进行其他更改.验证失败后,我希望他最近的更改坚持下去,而不是数据库中的信息.
注意:由于我的表单的性质,我无法将模型绑定到它.
我正在使用laravel 5进行我的项目,一切都运行正常,但最近我遇到了这个问题,我明白了.
devboy@devboy-hp ~/sonel_ims_project/ims_eneo $ php artisan serve
Laravel development server started on http://localhost:8000/
[Fri Nov 13 12:00:56 2015] Failed to listen on localhost:8000 (reason: Address already in use)
Run Code Online (Sandbox Code Playgroud)
我曾尝试devboy@devboy-hp ~ $ sudo netstat -plnt
并获得
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1840/dnsmasq
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1985/cupsd
tcp 0 0 127.0.0.1:8888 0.0.0.0:* LISTEN 7563/php-5.6.3
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 1656/master …
Run Code Online (Sandbox Code Playgroud) 我曾经在代码 Igniter 中做过类似的事情
$this->db->select('*');
$this->db->from($this::DB_TABLE);
if ($role == "manager") {
$this->db->where('is_manager',1);
}
if ($role == "staff") {
$this->db->where('is_staff',1);
}
$this->db->where('is_active', 1);
$this->db->order_by('last_name', 'asc');
$user_set = $this->db->get();
return $user_set;
Run Code Online (Sandbox Code Playgroud)
我如何在 Laravel 5 中编写类似的查询。我是 Laravel 的新手。