Eloquent를 사용하는 경로에서 활성 클라이언트를 필터링해야합니다.Laravel Eloquent, 피봇 테이블 열에서 필터링
수정할 수없는 타사 데이터베이스로 작업하고 있습니다. 내 프로젝트에는 두 가지 모델이 있습니다 : Cliente (클라이언트) 및 Ruta (경로), many to many 관계가 있으므로 내 모델에 belongsToMany 관계를 추가했습니다.
필자가 피벗 테이블에서 관심을 갖고있는 유일한 열은 클라이언트가 경로에 대해 비활성화되었는지 여부를 알려주는 DESACTIV입니다.
루타 모델 :
class Ruta extends Model
{
protected $connection = 'mysql2';
protected $table = 'truta';
protected $primaryKey = 'CODIRUTA';
public function clientes(){
return $this->belongsToMany(Cliente::class, 'tcpcarut', 'CODIRUTA', 'CODICLIE')->withPivot('DESACTIV');
}
}
Cliente 모델 :
class Cliente extends Model
{
protected $connection = 'mysql2';
protected $table = 'tcpca';
protected $primaryKey = 'CODICLIE';
public function rutas(){
return $this->belongsToMany(Ruta::class, 'tcpcarut', 'CODICLIE', 'CODIRUTA')->withPivot('DESACTIV');
}
}
는 내가 필요로하는 특정 경로 주어진 활성화 (또는 비 비활성화) 클라이언트를 얻는 것입니다. 내가 이렇게 내 컨트롤러에했을
:
$miRuta = Ruta::where('CODIRUTA','=',$ruta)->first();
$clientes = array();
foreach ($miRuta->clientes as $cliente){
if ($cliente->DESACTIV == 0){
array_push($clientes, $cliente->NOMBCLIE);
echo end($clientes)."<br/>";
}
}
그리고 그것은 잘 작동하지만 나는 그것이 우아한 생각하지 않습니다. 나는 이것이 황홀함을 통해 성취 될 수 있다는 것을 안다, 나는 그것에 멍한 틈에 다만이고 그것을하는 방법을 모른다. 그것은 단지 활성 클라이언트를 반환 있도록
은 어쩌면 내가, 내 루타 모델에 clientes에 방법을 필터를 추가 할 수 있습니다.
아니면 그것은 나는 내가 무슨 말을하는지 알처럼
내가 그것을 소리로 들리 겠지만 isDeactivated처럼 Cliente 모델에 메소드를 추가하는 것이 최선이 될 수 있지만 사람이 필요합니다 내 손을 잡으려고, 나는 너무 멍청한 놈이다. 예를 들어 주시면 감사하겠습니다.
필자는 어디에서 일인지 들어 본 적이 없었습니다. 사용자가 작업하는 것을 알기 위해 시간을 들이지 않고 프로젝트를 시작할 때 일어나는 일입니다. 당신이 보았 듯이, 내가 아는 한 가장 빠른 해결책을 구현 했으므로 프로젝트를 계속 진행할 수있었습니다. 고마워, 내 코드는 이런 식으로 훨씬 더 깨끗하다. D. – Adocad