我想使用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个字段。 –