我有兩個型號:Barang 和 Ruangan
在遷移巴朗:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateBarangTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('barang', function (Blueprint $table) {
$table->id();
$table->string('nama');
$table->string('spesifikasi');
$table->foreignId('id_ruangan');
$table->string('kondisi');
$table->integer('jumlah');
$table->string('sumber_dana');
$table->string('jenis');
$table->string('keterangan');
$table->timestamps();
});
Schema::table('barang', function (Blueprint $table) {
$table->foreign('id_ruangan')->references('id')->on('ruangan');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('barang');
}
}
在移民軟干
<?php use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateRuangansTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('ruangan', function (Blueprint $table) {
$table->id();
$table->string('nama_ruangan');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('ruangans');
}
}
這里是我的模型巴朗
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Barang extends Model
{
use HasFactory;
protected $table = "barang" ;
public function ruangan()
{
return $this->belongsTo(Ruangan::class);
}
}
當我在 tinker 上呼叫它時
$bar = new Barang
$bar = Barang::first()
$bar->ruangan->nama_ruangan
它的回傳 null ,
即使在資料庫的每個表中我都添加了一些虛擬資料
我花了 3 個小時來解決它但沒有找到答案,我已經回滾了遷移,我創建了兩次但仍然沒有解決,請幫助我
uj5u.com熱心網友回復:
當您在laravel的命名約定之外使用外鍵時,您必須將自定義外鍵名稱作為關系定義的第二個引數傳遞。
public function ruangan()
{
return $this->belongsTo(Ruangan::class, 'id_ruangan');
}
然后你就可以訪問$bar->ruangan->nama_ruangan;獲取nama_ruangan從軟干模型。
uj5u.com熱心網友回復:
你把關系放在軟干模型上了嗎?
例子:
public function barang()
{
return $this->hasOne(Barang::class);
}
順便說一下,首先回傳集合中的第一項
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/377689.html
上一篇:如何洗掉模板文字中的額外空間?
