亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel:如何使用外鍵填充現有數據?

Laravel:如何使用外鍵填充現有數據?

PHP
四季花海 2023-07-08 17:25:43
我構建了兩個模型,代表我的 mysql 數據庫中的兩個表。在一張表中,我獲得了一些汽車經銷商的郵政編碼,在第二張表中,我獲得了郵政編碼的坐標。不幸的是,我沒有得到相關數據。我使用了 zip_code 和foreign_key。public function up(){    Schema::create('plzs', function (Blueprint $table) {        $table->id();        $table->text("Ort");        $table->decimal('Latitude', 10, 8);        $table->decimal('Longitude', 11, 8);    });}和public function up(){    Schema::create('autodealers', function (Blueprint $table) {        $table->id();        $table->bigInteger('plz_id')->unsigned();        $table->text("H?ndler");        $table->foreign('plz_id')->references('id')->on('plzs')->onDelete('cascade');              });}然后我遷移該表并在我的數據庫中創建該表。之后,我通過 csv 文件將數據導入到 mySQL 中的表中。一切正常。這里我定義了一對一的關系。請.php:public function dealer(){    return $this->hasOne('App\Autodealer', 'plz_id');}自動經銷商.php:public function coor(){    return $this->belongsTo('App\plz');}通過 web.php 我定義了路線:Route::get('/auto', 'AutohaendlerController@index');從這條路線我調用索引方法:public function index(){    $dealer = \App\Autodealer::all();    return view('plz', array('ausgabe'=>$dealer));}當我的視圖看起來像這樣時,它工作得非常好:<body>    <ul>        @foreach ($ausgabe as $dealer)            <li>{{$dealer}}</li>        @endforeach    </ul>但是當我使用<li>{{$dealer->coor}}</li>它時,沒有數據顯示。coor() 函數應該調用BelongTo 方法。在修補程序中,我的數據似乎也不相關。我缺少什么?當我使用 Tinker 并保存具有相同 id 和 plz_id 的 plz 對象和 Autodealer 對象時,它可以工作。當我導入數據時,這似乎是一個問題。
查看完整描述

2 回答

?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊

我認為您缺少 coor() 關系中的鍵。您沒有使用 autodealers 表中的 id 作為外鍵,因此您需要在關系中進行設置。

public function coor(){
    return $this->belongsTo('App\plz', 'id', 'plz_id');
}


查看完整回答
反對 回復 2023-07-08
?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

updated_at當我使用 Tinker 時,我注意到,如果沒有,就無法保存對象created_at。Tinker 拋出這個 SQL 錯誤:


照亮/數據庫/QueryException 并顯示消息 'SQLSTATE[42S22]:未找到列:1054 '字段列表'中的未知列 'updated_at'(SQL:插入 ( , , )plzs值id( updated_at33611 created_at, 2020-07-02 11:18: 12, 2020-07-02 11:18:12))'


所以我在表中添加了時間戳:


public function up()

{

    Schema::create('plzs', function (Blueprint $table) {

        $table->bigIncrements('id');

        $table->text("Ort");

        $table->decimal('Latitude', 10, 8);

        $table->decimal('Longitude', 11, 8);

        $table->timestamps();

    });

}


public function up()

{

    Schema::create('autodealers', function (Blueprint $table) {

        $table->bigIncrements('id');

        //connect to the plzs table via reference to plz table

        $table->unsignedBigInteger('plz_id');

        $table->text("H?ndler");


        //index for any foreign key

        $table->index('plz_id');  

        $table->timestamps();

    });

}

在 mySQL 中updated_at,created_at每個表的 , 列必須另外設置 CURRENT-TIME 標準,以便在導入 csv 數據期間填充updated_at和列。created_at


查看完整回答
反對 回復 2023-07-08
  • 2 回答
  • 0 關注
  • 192 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號