laravel model 技巧

陆雅志
2023-12-01

1、设置默认属性返回值

 protected $attributes = [
        'goal_distance' => '100',
        'goal_time' => '0',
        'reaction_force' => '0',
        'handle_height' => '0'
    ];

通过withDefault()当查询未空时返回上面数据

 public function preplan()
    {
        return $this->hasOne(WalktrTrainingendparam::class, 'user_id', 'user_id')
            ->orderBy('user_id', 'desc')
            ->orderBy('timestamp', 'desc')
            ->select('user_id', 'goal_distance', 'goal_time', 'reaction_force', 'handle_height')
            ->withDefault();
    }

2、设置返回数据类型

protected $casts = [
        'goal_distance' => 'integer',
        'goal_distance' => 'integer',
        'reaction_force' =>'integer',
        'back_reaction_force' =>'integer',
        'handle_height' => 'integer',
        'recommended_goal_distance' => 'integer',
        'recommended_goal_time' => 'integer'
    ];

3、多数据库连接

  public $table = 'walktr_facility';//表名
  protected $connection = 'pgsql_walk';//database.php中数据库名

  database.php中

        'pgsql' => [
            'driver' => 'pgsql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '5432'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'prefix' => '',
            'prefix_indexes' => true,
            'schema' => 'public',
            'sslmode' => 'prefer',
        ],
        'pgsql_walk' => [
            'driver' => 'pgsql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST_WALK', '127.0.0.1'),
            'port' => env('DB_PORT_WALK', '5432'),
            'database' => env('DB_DATABASE_WALK', 'forge'),
            'username' => env('DB_USERNAME_WALK', 'forge'),
            'password' => env('DB_PASSWORD_WALK', ''),
            'charset' => 'utf8',
            'prefix' => '',
            'prefix_indexes' => true,
            'schema' => 'public',
            'sslmode' => 'prefer',
        ],

 类似资料: