我想使用Laravel上的關係訪問控制器功能中的數據。使用關係訪問數據Laravel
我將首先解釋我的代碼:
我有3個表,項目,客戶端和client_project。
在這一刻,client_project沒有任何關係,我只是手動添加它。
現在我想使用laravel上的關係,但它有點令人困惑(至少對我而言)。
我認爲這不是太重要的項目和客戶端的代碼表,只需要像主鍵的id和一些字段更多。
我client_project遷移看起來像在這裏:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
class CreateClientProjectTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('client_project', function(Blueprint $table)
{
$table->increments('id');
$table->integer('client_id');
$table->integer('project_id');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('client_project');
}
}
Client_Project模型看起來像在這裏:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Client_Project extends Model
{
protected $fillable = ['client_id','project_id'];
public $table = 'client_project';
public function clients()
{
return $this->hasMany('App\Models\Project');
}
public function projects()
{
return $this->hasOne('App\Models\Client');
}
}
一個客戶可以有多個項目,但一個項目只能由一個客戶端創建。我認爲關係是好的。 (起初,我認爲與關係,我不需要做client_project表),但我認爲這是一個錯誤的想法。我也想用這張桌子做。
所以,現在,當我嘗試的功能控制器上調用它的問題,我想我可以進入使用POR示例數據:
App\Models\Project::find(1)
,像laravel的醫生說。
的功能是這樣的:
$client = new Client();
$client->name = $request->input("nameClient");
$client->slug = $request->input("slugClient");
$client->priority = $request->input("priorityClient");
$client->save();
$client_project = new Client_Project();
$client_project->client_id = App\Models\Client::max('id');
$client_project->project_id = App\Models\Projects::max('id');
$client_project->save();
客戶端的一部分,是工作。我只是把一些投入的價值和我創造一個新的。
問題出在$ client_project。我想讓它變得動態。我創建了客戶端和項目,並且我的代碼獲得了最後一個(更大的ID)以及項目的最後一個(更大的ID)。 我如何使用關係訪問它們? 可能需要編輯client_project的遷移並在project_id或client_id中放置一些密鑰?
如果需要更多信息,請詢問。 任何幫助將不勝感激!
你是過於複雜的事情,你不需要client_project表(此類型的表在很多用於許多realtionships),你只要NEDD CLIENT_ID列在您的項目表,使維吾爾betveen客戶端Ant項目。但是,如果你也想要第三張表,那就把它變成許多到很多的實用性(你不需要ClientProject模型,你在客戶和項目模型中建立多對多的關係)。 –
您可以使用$ client-> id獲取上次插入的客戶端ID。用這種方法,如果你有多個用戶在同一時間插入,那麼它就會變成假值。 –
@Autista_z你能回答一下我的代碼必須看起來如何?我想我只會用兩張表來完成,併爲各個ID添加1個字段。 –