RJustice

858 经验值

<template>
    <div id="userInfo">
        <p>{ user.nickname }</p>
        <p>{ user.uuid }</p>
        <p>{ user.token }</p>
    </div>
</template>
<script>
    export default {
        data() {
            return {
                user: {}
            }
        },
        mounted() {
            this.axios.get('user.aplan.com/users/info', {headers: {'Authorization': 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vdXNlci5hcGxhbi5jb20vYXBpL2F1dGhvcml6YXRpb25zL3Rva2VuIiwiaWF0IjoxNTAyMzUzNzE4LCJleHAiOjE1MDI0NDAxMTgsIm5iZiI6MTUwMjM1MzcxOCwianRpIjoiazdDdHhKS3pBYXcwelZBWiIsInN1YiI6Ijg4ZjAwYTAxLTc4YzMtNDRiMi1iNWZmLWY2ZjUxYjEyYTEwNiIsIm5pY2tuYW1lIjoidGVzdCJ9.B8qcxt7ioZKC_2yZ0dwQKVRuzgXtwCw4ghTacqNl3go'})
                .then(response => {
                    console.log(response.data);
                    this.user = response.data.data;
                }).catch(error => {
                console.log(error)
            })
        },
    }
</script>

然后会提示

这是为什么... 我已经在main.js

import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-default/index.css'
import App from './App.vue'
import axios from 'axios'
import VueAxios from 'vue-axios'

Vue.use(ElementUI, VueAxios, axios);

new Vue({
    el: '#app',
    render: h => h(App)
});

也已经安装成功了

<?php

namespace App\Http\Controllers;

use Carbon\Carbon;
use Dingo\Api\Http\Request;

class ExampleController extends BaseController
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct() {
        //
    }

    public function test(Request $request) {
        echo $request->version();
    }
}

使用 Dingo 的Request 就可以获取 version...

我一直使用的基础的 ...

Route


$api = app('Dingo\Api\Routing\Router');

$api->version(['v1','v2'], [
    'namespace' => 'App\Http\Controllers',
    'middleware' => 'cors',
], function (\Dingo\Api\Routing\Router $api) {
    $api->post('authorizations/token/{type?}', 'AuthController@token');

    $api->group(['middleware' => 'api.auth'], function (\Dingo\Api\Routing\Router $api) {
        $api->put('authorizations/refresh', 'AuthController@refresh');

        $api->delete('authorizations/del', 'AuthController@destroy');
    });
    
    $api->get('test','ExampleController@test');
});

Controller


use Carbon\Carbon;

class ExampleController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct() {
        //
    }

    public function test() {
       // 在这里怎么获取是哪个版本?
      //      echo version()
    }
}

Config

API_STANDARDS_TREE=vnd
API_PREFIX=api
API_STRICT=false
API_DEBUG=true
API_VERSION=v1
API_SUBTYPE=uc
API_NAME=""

比如我使用 http://test.example/api/test
header : Accept application/vnd.uc.v1+json

header : Accept application/vnd.uc.v2+json

这两个header都可以访问, 但是我如何在Test中获取 是哪个版本访问我的.

我使用 dingo/api 配置了 v1 ,v2 并且 我有一个接口 如 users/info 在v1 和 v2 状态下都能访问.

我如何获取用户是使用 v1版本 还是v2 版本?

我的意思是如何 在 Controller 里面获取 版本号, 而非在 Route

为什么 楼盘没有把最新报价做冗余字段... 报价表作为历史数据..这样就只需要两表

SELECT * FROM B LEFT JOIN  C ON B.new_house_id = C.new_house_id LEFT JOIN A ON A.id = B.new_house_id WHERE  ( B.area * C.price ) BETWEEN 800000 AND 1000000

按你平时使用TP的经验来说 居然还会想用TP5? 我被逼用过一次TP 再也不会碰他们家一切东西

class Books {
public function tags(){
$this->belongsToMany('App\Tags');
}
}
class  Tags{
public function books(){
$this->belongsToMany('App\books');
}
}
class Books {
public function tags(){
$this->belongsToMany('App\Tags');
}

class  Tags{
public function books(){
$this->belongsToMany('App\books');
}
}
}

多对多 可以直接看文档, 使用belongsToMany

已解决, 忽略了 设置 UserModel 的 keyType => 'string'

我现在有一个 user 表

user_id, uuid, user_name ...

有一个 tag 表

tag_id , tag_name ...

有一个中间表 tag_user

 tag_id, user_uuid 

如果按正常的 tag_user 中的对应键是 tag_id 和 user_id, 并且 两个表主表都是 使用 id 作为主键.

实际 我的 user 表 使用 uuid 来作为其他所有相关数据的关联 , tag 的主键 也是 tag_id

我如何自定义Pivot 中间表

我的 User Model

class User extends Model implements AuthenticatableContract, AuthorizableContract, JWTSubject
{
    use Authenticatable, Authorizable, SoftDeletes;

    public function tags() {
        return $this->belongsToMany(Tag::class,'tag_user','tag_id','user_uuid')
                    ->using(TagUser::class);
    }
}

我的 Tag Model

class Tag extends Model
{
public function user() {
        return $this->belongsToMany(User::class)->using(TagUser::class);
    }
}

我的自定义 中间表 TagUser

use Illuminate\Database\Eloquent\Relations\Pivot;

class TagUser extends Pivot
{
    protected $fillable = [
        'tag_id',
        'user_uuid',
    ];

    protected $table = 'tag_user';

    public $timestamps = false;

    public function tag() {
        return $this->belongsTo(Tag::class, 'tag_id', 'tag_id');
    }

    public function user() {
        return $this->belongsTo(User::class, 'user_uuid', 'uuid');
    }

我现在如果要创建一个 User , 获得

[
'user_id' => 41,
'uuid' => '01297c21-5a63-3529-8a29-409e712e4bee'
]

创建一个 Tag 获得

[
'tag_id' => 1,
'tag_name' => '红色'
]

User 设置主键 uuid
Tag 设置主键 tag_id

然后我怎么使用User Model 来填入关联表

我使用

User::find(41)->tags()->attach(1)

但是这样插入表中数据自动把 user->uuid 转成整形了

tag_id | user_uuid
------    | ---------
1         | 1297