簡體   English   中英

Laravel 8 種子屬性 [id] 在 Eloquent 構建器實例上不存在

[英]Laravel 8 seeding property [id] does not exist on the Eloquent builder instance

我正在為客戶重建一個舊項目並將其移動到 Laravel 8。我已經創建了所有模型並將當前項目中的所有數據轉換為 json,因此我可以將數據作為播種機數據遷移。

我有一個Usercar model,它與CarUser模型有belongsTo關系。 我需要在播種過程中通過比較和匹配舊的 id 值來重新創建關系,以便創建新的記錄和關系。 我所有的播種機都成功運行,直到我到達**UsercarSeeder** ,然后我得到一個property [id] does not exist on the Eloquent builder instance 我知道我錯過了一些非常簡單的東西。 謝謝。

數據庫/數據/汽車.json

[
    {
        "old_car_id": 31,
        "start_year": 1955,
        "end_year": 1958,
        "model": "356  Carrera 1500 GS Coupe",
        "horse_power": 110,
...

數據庫/數據/用戶.json

[
    {
        "old_user_id": "4be7c3a7-d626-456a-83be-5d303bf90d02",
        "first_name": "Charles",
        "last_name": "Smith",
...

數據庫/數據/用戶-cars.json

[
    {
        "old_user_id": "4be7c3a7-d626-456a-83be-5d303bf90d02",
        "old_car_id": 227,
        "car_color": "Gray",
        "year": 2015,
        "tire_points": 140,
...

數據庫/播種機/UsercarSeeder.php

<?php

namespace Database\Seeders;

use App\Models\User;
use App\Models\Car;
use App\Models\Usercar;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class UsercarSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {

        $json = file_get_contents('database/data/user-cars.json');
        $data = json_decode($json);

        $user = User::where('old_user_id', 'old_user_id')->get();
        $car = Car::where('old_car_id', 'old_car_id')->get();

        foreach ($data as $obj) {
            Usercar::create(array(
                'user_id' => $user->id,
                'car_id' => $car->id,
...

get()方法返回模型的集合。 如果你需要一個 object,你應該使用first()方法。

where()也應該類似於:

->where($column, $value)

看起來您兩次傳遞了列名,這可能會返回一個空集合。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM