小编jac*_*414的帖子

扩展Laravel中的雄辩模型(使用不同的表)

我正在构建一个涉及跟踪不同类型潜在客户的Laravel应用程序.例如,有再融资线索购买线索.

由于引线共享大量的信息和功能,但不是全部,我的想法是创建一个Lead类,它扩展了Laravel的Model类,然后是一个RefinanceLead扩展Lead类的类.

所以我有:

class Lead extends Model
{
    // shared lead stuff
}

class RefinanceLead extends Lead
{
    // stuff specific to refinance leads
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 这种策略有意义吗?
  2. 如果是这样,Eloquent将如何处理数据?我有leads桌子和refinance_leads桌子吗?
  3. RefinanceLead类的新实例是否会使用leads表中的任何内容?

我在通过文档回答这个问题时遇到了麻烦,但是如果我错过了解释的地方,请告诉我.谢谢.

inheritance models laravel eloquent

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

Laravel测试不验证数据库约束

我有一个包含users表格的Laravel 5.3应用程序.该表上的一个字段是api_token,在数据库定义中设置为NOT NULL.如果我使用Postman并点击我的API端点来创建用户并且不包含该api_token字段,则会收到以下错误:SQLSTATE[HY000]: General error: 1364 Field 'api_token' doesn't have a default value.

我还没有添加代码来生成令牌,所以这正是我所期望的.但是,我有这个PHPUnit测试:

/** @test */
public function a_user_can_be_created()
{
    $this->user_data = [
        'first_name' => 'Jane',
        'last_name' => 'Smith',
        'email_address' => 'jsmith@mailinator.com',
        'phone' => '1234567890',
        'username' => 'jsmith',
        'password' => 'testing'
    ];

    $this->post('/api/users', $this->user_data, array(
                'Accept' => 'application/json'
            ))
         ->assertResponseStatus(201)
         ->seeJsonEquals(['status' => 'success'])
         ->seeInDatabase('users', $this->user_data);
}
Run Code Online (Sandbox Code Playgroud)

问题是测试通过了.当用户保存数据库时应该抛出异常,该测试如何成功?

我已经在不同时间点"死亡并倾倒"并确认在自动化测试运行时数据实际上已保存到数据库中.我也尝试使用相同的数据库进行Postman和自动测试(而不是单独的测试数据库) - 相同的结果.

phpunit laravel laravel-5

8
推荐指数
2
解决办法
772
查看次数

使用Angular为Google地方信息自动填充指定起始位置

我正在使用AGM提供的带有Angular的Google Places Autocomplete API .它运行良好,但我无法手动设置我的起始位置.这意味着,如果我坐在洛杉矶的电脑前,我希望能够告诉API返回结果,就像我在波士顿一样.我相信这可以在谷歌的基础上根据他们的文档,但我还没有弄清楚如何在我正在使用的Angular组件中做到这一点.

任何人都有一个提示如何让这个工作?以下是我的组件的相关部分.谢谢!

  setGoogleMapsAutocomplete() {
    this.mapsAPILoader.load().then(() => {
      let autocomplete = new google.maps.places.Autocomplete(this.searchElementRef.nativeElement, {
        types: ["address"]
      });
      autocomplete.addListener("place_changed", () => {
        this.ngZone.run(() => {
          let place = autocomplete.getPlace();

          this.address = '';

          for (var i = 0; i < place.address_components.length; i++)
          {
            var addressType = place.address_components[i].types[0];

            if (this.hasOwnProperty(addressType)) {
              let nameLength = addressType == 'administrative_area_level_1' ? 'short_name' : 'long_name';

              this[addressType] = place.address_components[i][nameLength];
            }
          }
          this.error = false;
        });
      });
    });
  }
Run Code Online (Sandbox Code Playgroud)

angular-google-maps angular

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