Laravel eloquent с () возвращает ноль - PullRequest
0 голосов
/ 22 октября 2019
namespace App;

use App\Model\Service\Area;
use App\Model\Bid\Service;
use Illuminate\Database\Eloquent\Model;

class Bid extends Model
{
    protected $table = "bid";

    protected $primaryKey = 'bid_id';

    protected $guarded = [];

    protected $with = ['services'];

    public function services() {
        return $this->hasMany(Service::class, 'bid_id');
    }

    public function area() {
        return $this->belongsTo(Area::class, 'area_id', 'area_id');
    }
}
namespace App\Model\Service;

use Illuminate\Database\Eloquent\Model;

class Area extends Model
{
    protected $table = "location_area";

    protected $primaryKey = 'area_id';

    protected $guarded = [];

    public function city()
    {
        return $this->belongsTo(City::class, 'city_id');
    }
}

Таблица областей Миграция и данные

Таблица предложений Миграция и данные

Когда я пытаюсь получить доступ

Bid::with('area')->find(BID_ID);

Возвращается ноль Запрос запускается неправильно:

"select * from `location_area` where `location_area`.`area_id` in (0)"

Но если я делаю как:

$bid = Bid::find(BID_ID);
dd($bid->area);

Возвращает значения таблицы областей. Что не так? Помогите мне, пожалуйста. У меня эта проблема уже давно. Заранее спасибо:)

Ответы [ 2 ]

1 голос
/ 22 октября 2019

вы должны быть объявлены методом в вашей модели MID

    public function area()
        {
            return $this->belongsTo(Area::class, 'bid');
        }

как-то так, после этого вы получаете доступ к области в with()

Bid::with('area')->find(BID_ID);
0 голосов
/ 22 октября 2019

Измените эту функцию в вашей модели ставки:

 public function area() {
        return $this->belongsTo(Area::class, 'area_id');
    }
...