morphOne关系始终返回null

时间:2019-05-07 09:28:51

标签: laravel eloquent

im这样设置一对一(多态)

我的模型:

namespace App;
use Illuminate\Database\Eloquent\Model;
class Payement extends Model{
    protected $table = 'payements';
    protected  $primaryKey = 'id';
    public function payementable(){
        return $this->morphTo();
    }}

class Recu extends Model{
    protected $table = 'recus';
    protected  $primaryKey = 'id';  
    public function payement(){
        return $this->morphOne('App\Payement', 'payementable');
    }}

我的表格架构

Schema::create('recus', function (Blueprint $table) {
            $table->bigIncrements('id');
        });
Schema::create('payements', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('numero')->unique();
            $table->bigInteger('payementable_id');
            $table->string('payementable_type');
            $table->timestamps();
        });

问题是它正在工作

App\Payement::find(1)->payementable; 

此返回null

App\Recu::find(1)->payement;

这将返回空集合

Recu::first()->payement()->get()

1 个答案:

答案 0 :(得分:1)

您提供的设置没有任何问题。请使用以下数据进行测试:

payements:
---------------------------------------------
|id|numero|payementable_type|payementable_id|
---------------------------------------------
|1 |1     |App\Recu         |2              |
---------------------------------------------

recus:
----
|id|
----
|1 |
----
|2 |
----
|3 |
----