[英]Property [id] does not exist on the Eloquent builder instance in Laravel 8 and Livewire 2.7
[英]Laravel 8 seeding property [id] does not exist on the Eloquent builder instance
我正在為客戶重建一個舊項目並將其移動到 Laravel 8。我已經創建了所有模型並將當前項目中的所有數據轉換為 json,因此我可以將數據作為播種機數據遷移。
我有一個Usercar
model,它與Car
和User
模型有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.