小编Fok*_*est的帖子

如何在laravel 5中使用Eloquent更新数据透视表

我是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等效项?

mysql laravel eloquent laravel-5

20
推荐指数
4
解决办法
2万
查看次数

如何在laravel 5中创建一个唯一的随机字符串

我是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.

感谢帮助.

php random laravel-5

10
推荐指数
3
解决办法
3万
查看次数

如何使用laravel 5中的队列通过电子邮件发送密码重置链接

我正在使用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.如果不修改这个非项目文件,它们是更好的方法吗?

email queue laravel-5 laravel-5.1

10
推荐指数
2
解决办法
6544
查看次数

Google reCAPTCHA,站点所有者的错误:站点密钥的域名无效

我正在使用Google recaptcha V2 API.我注册了域名divostar.com,127.0.0.1,一切正常.现在,我添加了一个新域10.25.0.1,它似乎不适用于此.我收到了错误ERROR for site owner: Invalid domain for site key.每个域每行写一个.真的可能是什么问题?

recaptcha

7
推荐指数
0
解决办法
3085
查看次数

数据在 Laravel 会话中持续多长时间?

最近,我注意到我的 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 变量在会话中不再存在,所以我必须注销并再次登录才能让变量回到会话中。可能是什么问题呢?我使用文件作为我的会话驱动程序。

session laravel laravel-5

6
推荐指数
1
解决办法
4253
查看次数

Laravel中created_at和updated_at列的优点是什么?

我是laravel的新手.最近,我为我的应用程序创建了我的ER图.在学习laravel时,我发现它们在模式构建器中具有创建created_at和updated_at列的时间戳属性.根据我的建模,我不需要这些额外的列,因此必须拥有它们或者在每个表上都有这些列的好处.

timestamp laravel

5
推荐指数
1
解决办法
3376
查看次数

与Laravel 5.4和Mariadb的连接错误太多

我最近将我的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的问题,我该如何解决它.

php mysql mariadb laravel

4
推荐指数
1
解决办法
5461
查看次数

RUP是敏捷方法吗?

我一直在阅读软件开发方法论。我碰到一条线,说敏捷方法包括Rational Unified Process,Scrum,Crystal Clear,Extreme Programming,自适应软件开发,功能驱动开发和动态系统开发方法(DSDM)。我想知道的是RUP是否应该在列表中。

agile rup

3
推荐指数
1
解决办法
1199
查看次数

如何在laravel 5中的更新期间验证失败后重新填充具有最新更改的表单

我是laravel 5的新手.我创建了一个用于编辑用户信息的表单,其中填充了来自数据库的信息.在表单验证后,如果我收到错误,我将丢失刚修改的所有信息,并恢复db信息.

我的表单字段如下所示:

 <input type="text" name="name" value="{{ $user->name }}" id="name"  class="form-control"/>
Run Code Online (Sandbox Code Playgroud)

我希望看到的是这个.如果在编辑期间,用户从字段中清除用户名,并对表单上的不同字段进行其他更改.验证失败后,我希望他最近的更改坚持下去,而不是数据库中的信息.

注意:由于我的表单的性质,我无法将模型绑定到它.

php forms validation laravel laravel-5

3
推荐指数
1
解决办法
1341
查看次数

无法在linux上启动laravel开发服务器

我正在使用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)

php linux laravel artisan

3
推荐指数
1
解决办法
1万
查看次数

如何在 Laravel 5 中链接查询

我曾经在代码 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 的新手。

activerecord laravel

2
推荐指数
1
解决办法
4341
查看次数