我有一个用户模型,用户可以有很多项目
public function project()
{
return $this->hasMany('App\Project');
}
然后我有一个项目模型,一个项目可以有很多文档
public function profusionUser()
{
return $this->belongsTo('App\User', 'userId');
}
public function document()
{
return $this->hasMany('App\document');
}
文档可以包含许多DocumentData
public function project()
{
return $this->belongsTo('App\Project', 'projectId');
}
public function documentData()
{
return $this->hasMany('App\DocumentData');
}
然后我有了DocumentData Model
public function document()
{
return $this->belongsTo('App\Document', 'documentId');
}
现在我认为这些关系是根据外键正确设置的。
现在,在我的一个控制器中,我获得了项目的选择文档并将其传递给我的视图。如果我做
{{dd($selectedDoc)}}
我可以看到类似的东西
Document {#298 ▼
#table: "document"
#guarded: []
#attributes: array:7 [▼
"id" => "1"
"projectId" => "1"
"name" => "someDoc"
"description" => "someDocdocument"
"deleted_at" => null
"created_at" => "2016-05-20 08:43:06"
"updated_at" => "2016-05-20 08:43:06"
]
}
所以我的观点是获得正确的文档。现在我需要获取此文档的数据。所以我认为我有类似的东西。
$selectedDoc->documentData->where('key', 'whoData')->first()->value
但是,当我这样做时,我收到错误
Column not found: 1054 Unknown column 'document_data.document_id' in 'where clause'
因此,由于某种原因,它使用的是document_id而不是documentId。如何从我的视图中获取与文档关联的数据?
由于
数据库架构
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('userName')->default('');
$table->string('userEmail')->default('');
$table->tinyInteger('active')->default(1);
$table->timestamps();
});
Schema::create('projects', function (Blueprint $table) {
$table->increments('id');
$table->string('projectName')->default('');
$table->string('projectValue')->default('');
$table->integer('userId')->unsigned()->default(0);
$table->foreign('userId')->references('id')->on('users')->onDelete('cascade');
$table->tinyInteger('active')->default(1);
$table->softDeletes();
$table->timestamps();
});
Schema::create('document', function(Blueprint $table)
{
$table->increments('id');
$table->integer('projectId')->unsigned()->default(0);
$table->foreign('projectId')->references('id')->on('projects')->onDelete('cascade');
$table->string('name')->default('')->nullable();
$table->longText('description')->default('')->nullable();
$table->softDeletes();
$table->timestamps();
});
Schema::create('document_data', function(Blueprint $table)
{
$table->increments('id');
$table->integer('documentId')->unsigned()->default(0);
$table->foreign('documentId')->references('id')->on('document')->onDelete('cascade');
$table->string('key')->default('')->nullable();
$table->longText('value')->default('')->nullable();
$table->softDeletes();
$table->timestamps();
});
更新 如果我将我的文档模型更改为此工作
public function documentData()
{
return $this->hasMany('App\DocumentData', 'documentId');
}
但是在文档和文档数据模型中设置外键是不是错了?