【问题标题】:Laravel json where not workingLaravel json 在哪里不工作
【发布时间】:2018-09-25 23:09:22
【问题描述】:

我在 json 结构中尝试where 查询。但总是返回null。我做错了吗?

我在模型中的作用域方法:

public function scopeWhereDeveloper(Builder $scope)
{
  return $scope->where('parameters->developer','yes');
}

我在模型中的静态方法:

public static function getDeveloper($columns = ['*'])
{
    return static::whereDeveloper()->first($columns);
}

迁移:

public function up()
    {
        Schema::create('admins', function(Blueprint $table) {
            $table->increments('id');
            $table->string('full_name');
            $table->string('user_name')->unique();
            $table->string('email')->unique();
            $table->string('password');
            $table->json('parameters')->nullable();
            $table->timestamps();
            $table->rememberToken();
        });
    }

测试方法:

/** @test */
public function it_can_get_admin_developer_by_parameter()
{
    $admin = create(Admin::class, ['parameters' => ['developer' => 'yes']]);

    $developer = Admin::getDeveloper();

    dd($developer); // return null

    $this->assertEquals($admin->email,$developer->email);

}

那我该怎么办?


太有趣了。当我使用这个查询时:return->where('parametersdeveloper','yes'); 总是返回 null。但是当我在 HomeController 中使用 ::getDeveloper()` 进行测试时,我可以获得用户。为什么会这样?

【问题讨论】:

  • 你的 Laravel 版本是多少?
  • Laravel 版本为5.6
  • 你的测试中dd($admin->getAttributes())的结果是什么?
  • array:8 [ "full_name" => "Jalen" "user_name" => "mertz.kevon" "email" => "rwill@kozey.net" "password" => "$2y$04$LJ9XSw1cu1i8e.WurqNCZe09t4zxFiUTaggZluuKK2hbC.52kcbba" "parameters" => "{"developer":"yes"}" "updated_at" => "2018-04-16 15:30:51" "created_at" => "2018-04-16 15:30:51" "id" => 1 ]

标签: php sql json laravel


【解决方案1】:

不要使用 where 前缀命名范围。 Eloquent 会假设您正在尝试使用 ->where('developer') 的简写。

将你的作用域重命名为scopeDeveloper

【讨论】:

  • @ysfkaya 如果将其重命名为scopeDeveloper,则需要将其用作Model::developer()
  • 是的,我注意到了,它在 Controller 中有效,但在测试中仍返回 null。你知道为什么吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-30
  • 2018-09-08
  • 2018-02-07
  • 2015-06-15
  • 2018-08-03
  • 1970-01-01
相关资源
最近更新 更多