Получение неверных данных из базы данных, даже если я получаю что-то другое в laravel API - PullRequest
2 голосов
/ 18 февраля 2020

Здравствуйте, ребята, я работаю над проектом laravel для создания API для передачи значения базы данных в формате json, но проблема в том, что у меня есть таблица пользователей в этой таблице. 2 Идентификатор 1 - это первичный ключ, а второй - бизнес-идентификатор Я хочу получить данные в соответствии с business_id, но он получает данные по id. Пожалуйста, помогите мне решить эту проблему.

Вот мой код модели

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class user extends Model
{
    protected $table = 'business';

}

Вот мой код контроллера

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\user;

class GetController extends Controller
{
    public function databybusinessid($business _id){
    $users = new user();
    $users = user::find($business _id);
    return response()->json($users);
}
}

Большое вам спасибо

Ответы [ 3 ]

1 голос
/ 18 февраля 2020

Вы используете user::find($business _id)

Метод find () автоматически выполнит поиск по первичному ключу, но ни один не определен в вашей модели, и Eloquent не может решить, какой из них выбрать из таблицы. Поэтому вы должны явно указать свой первичный ключ в своей модели, добавив следующую строку:

class user extends Model
{
    protected $table = 'business';

    protected $primaryKey = 'business_id';
}

В случае сомнений вы также можете извлечь запись базы данных по указанному столбцу c, используя где

 $users = user::where('business_id', '=', $business _id)->get()

Laravel документация по Eloquent ORM https://laravel.com/docs/5.8/eloquent

1 голос
/ 18 февраля 2020

find () Получить модель по ее первичному ключу.

Таким образом, вы должны использовать свой код как:

$users = user::where('business_id',$business_id)->first();
// Notice first() Retrieve the first model matching the query constraints...

Или вы можете изменить свой основной код в модели

namespace App;

use Illuminate\Database\Eloquent\Model;

class user extends Model
{
    protected $table = 'business';
    protected $primaryKey = 'business_id';

}
0 голосов
/ 18 февраля 2020

find () работает только по первичному ключу. вам нужно использовать где вместо этого. или вы можете определить business_id как первичный ключ в вашей модели пользователя.

protected $primaryKey = 'business_id';
public function databybusinessid($business _id){
    $users = new user();
    $users = user::where('business_id',$business _id)->first();
    return response()->json($users);
}
...