标签: laravel-session

PhpUnit 和 Laravel 5.4 如何在测试期间模拟会话数据

我正在使用 phpunit 测试 laravel 5.4 中的一个类,该类使用会话来获取数据。在应用程序运行时直接访问会话数据时,检索会话数据有效,即“会话('消费者')”返回一个值,但是当我尝试测试使用会话的函数时,出现以下错误:

ReflectionException: 类会话不存在

有人可以说明如何在测试期间完成设置会话数据。

我试过使用:

$this->session()->put([$array_value]) 但收到错误“class_im_testing 上不存在课堂会话”

在此先感谢您的帮助!

public function test_get_user()
{
    $mockUser =  [
        'id' => 'cf442564-d076-4198-beb5-edef5aa51a69',
        'name' => 'John Doe',
        'fname' => 'John',
        'lname' => 'Doe',  
    ];

    session->put('consumer', [
        'id' => 'cf442564-d076-4198-beb5-edef5aa51a69',
        'name' => 'John Doe',
        'fname' => 'John',
        'lname' => 'Doe',  
    ]);

    $user = $this->repo->getUser();

    $this->assertEqual($user, $mockUser);
}
Run Code Online (Sandbox Code Playgroud)
public function getUser()
{
   $user = new User(session('consumer'));
   return $user;
}
Run Code Online (Sandbox Code Playgroud)

php phpunit laravel laravel-session

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

laravel如何检查会话变量是否为空

如何检查此会话是否为空,此处为示例

 @elseif {{Session::get('package_id')}}=null
 @include('index.customer.customerpackage')
Run Code Online (Sandbox Code Playgroud)

以及如何检查{{Session :: get('package_id')}} = 1然后Free else Paid

php laravel blade laravel-5 laravel-session

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

Laravel - 停止并发访问记录

在 Laravel 中,有什么方法可以停止同时与同一条记录交互。例如,如果用户 A 正在编辑一条记录,那么我同时需要阻止用户 B 编辑同一条记录。

注意:我使用的是 SESSION_DRIVER=file & Laravel 5.2

目前大约有 500 多名用户使用该系统,它是一种管理面板,管理员可以在其中与记录交互,但我需要停止并发访问。最佳解决方案是什么?

php concurrency laravel laravel-session

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

尝试从数据透视表中查找数据时给出 Null

我在用户钱包模型之间有一个多对多的关系:

Wallet.php

public function users()
    {
        return $this->belongsToMany(User::class,'user_wallet','wallet_id','user_id')->withPivot('balance');
    }
Run Code Online (Sandbox Code Playgroud)

User.php

public function wallets()
    {
        return $this->belongsToMany(Wallet::class,'user_wallet','user_id','wallet_id')->withPivot('balance');
    }
Run Code Online (Sandbox Code Playgroud)

数据透视表user_wallet是这样的:

在此处输入图片说明

然后在控制器,我需要访问该balance字段:

public function chargeWallet(Request $request, $wallet, $user)
{ 
            // $wallet is wallet_id (2) & $user is user_id (373)
            $bal = Wallet::with("users")
                ->whereHas('users', function ($query) use ($user) {
                    $query->where('id',$user);
                })->where('id', $wallet)->first();
            dd($bal->balance);
}
Run Code Online (Sandbox Code Playgroud)

但现在我得到null了结果dd($bal->balance)!!

那么这里有什么问题呢?我怎样才能正确地得到balance

php laravel laravel-session laravel-5.8

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